Promise.all()与Promise.race()

1. Promise.all()

Promise.all(iterable)方法返回一个Promise实例。这个实例在iterable参数内的所有Promise对象都resolved或者参数不包含Promise时回调完成。如果参数中有一个rejected,则此实例回调失败,失败原因时第一个rejected的promise结果。

例子

先定义两个函数,模拟异步请求。
func_1在2秒之后状态变为resolvedfunc_2在3秒之后状态变为resolved
当两个函数都变为resolved之后,Promise.all()的实例回调完成。

function func_1 () {
    return new Promise(function (resolve, reject) {
        setTimeout(function() {
            console.log('func_1 end')
            resolve()
        }, 2000)
    })
}
function func_2 () {
    return new Promise(function (resolve, reject) {
        setTimeout(function() {
            console.log('func_2 end')
            resolve()
        }, 3000)
    })
}
Promise.all([func_1(), func_2()])
    .then(() => {
        console.log('all end')
    })

打印顺序如下:


打印顺序.png

2. Promise.race()

Promise.race(iterable) 。这个实例在iterable参数内的只要有一个Promise对象状态变为解决或拒绝,返回的 promise就会解决或拒绝。

function func_1 () {
    return new Promise(function (resolve, reject) {
        setTimeout(function() {
            console.log('func_1 end')
            resolve()
        }, 2000)
    })
}
function func_2 () {
    return new Promise(function (resolve, reject) {
        setTimeout(function() {
            console.log('func_2 end')
            resolve()
        }, 3000)
    })
}
Promise.race([func_1(), func_2()])
    .then(() => {
        console.log('end')
    })

打印顺序如下:


Promise.race打印顺序.png

end

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • title: promise总结 总结在前 前言 下文类似 Promise#then、Promise#resolv...
    JyLie阅读 14,206评论 1 21
  • Promise 对象 Promise 的含义 Promise 是异步编程的一种解决方案,比传统的解决方案——回调函...
    neromous阅读 12,777评论 1 56
  • 目录:Promise 的含义基本用法Promise.prototype.then()Promise.prototy...
    BluesCurry阅读 5,334评论 0 8
  • Promise含义 Promise是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更强大。所谓Pr...
    oWSQo阅读 4,707评论 0 4
  • 一个新的平凡的小草诞生了,它默默奉献给了你我他。在春天里,它在地上消除我们的疲劳。带给我们一丝温暖。 ...
    国服第198名沙迪阅读 2,593评论 1 1