Promise【二】


Promise.all的用法

1.它接受一个数组作为参数。

2.数组可以是Promise对象,也可以是其它值,只有Promise会等待状态改变。

3.当所有的子Promise都完成,该Promise完成,返回值是全部值的数组。

4.如果有任何一个失败,该Promise失败,返回值是第一个失败的子Promise的结果。

 function demo() {
       Promise.all([test(),test1()]).then((res)=>{
            console.log(res)
        })
            console.log('同步内容')

        }

        function test() {
            return new Promise(resolve => {
                Axios.get('https://www.fastmock.site/mock/46fde81ecfdc20038b863c7d7a8513ea/test/api/test').then((res) => {
                    console.log(res)
                    resolve(res)
                    console.log('同步测试')
                })
            })
        }
        function test1() {
            return new Promise(resolve => {
                Axios.get('https://www.fastmock.site/mock/46fde81ecfdc20038b863c7d7a8513ea/test/api/demo').then((res) => {
                    console.log(res)
                    resolve(res)
                    console.log('同步测试1+++++')
                })
            })
        }

Promise.race的用法

类似于Promise.all() ,区别在于 它有任意一个返回成功后,就算完成,但是 进程不会立即停止

  function demo() {
        Promise.race([test(),test1()]).then((res)=>{
            console.log(res)
        })
            console.log('同步内容')

        }

        function test() {
            return new Promise(resolve => {
                Axios.get('https://www.fastmock.site/mock/46fde81ecfdc20038b863c7d7a8513ea/test/api/test').then((res) => {
                    console.log(res,'调试第一个接口数据')
                    resolve(res)
                    console.log('同步测试')
                })
            })
        }
        function test1() {
            return new Promise(resolve => {
                Axios.get('https://www.fastmock.site/mock/46fde81ecfdc20038b863c7d7a8513ea/test/api/demo').then((res) => {
                    console.log(res,'调试第二个接口数据')
                    resolve(res)
                    console.log('同步测试1+++++')
                })
            })
        }