Promise学习:promise.all()方法

 

 

例子:

Promise.all([1,2,3])
.then( all => {
    console.log('1: ',all);
    return Promise.all([function(){
        console.log("ooxx")
    },"xxoo",false])
})
.then( all => {
    console.log('2: ',all);
    let p1 = new Promise( resolve => {
        setInterval( () => {
            resolve("I\'m P1")
        },1500);
    })
    let p2 = new Promise( resolve => {
        setInterval( () => {
            resolve("I\'m P2")
        },1400);
    })
    let p3 = new Promise( resolve => {
        setInterval( () => {
            resolve("I\'m P3")
        },1000);
    })
    return Promise.all([p1 ,p2 ,p3 ]);
})
.then( all => {
    console.log('3: ',all);
    let p1 = new Promise( (resolve,reject) => {
        setInterval( () => {
            resolve("I\'m P1")
        },1500);
    })
    let p2 = new Promise( (resolve,reject) => {
        setInterval( () => {
            reject("I\'m P2")
        },1400);
    })
    let p3 = new Promise( (resolve,reject) => {
        setInterval( () => {
            reject("I\'m P3")
        },1000);
    })
    return Promise.all([ p1, p2, p3]);
})
.then( all => {
    console.log('4: ',all);
})
.catch( error => {
    console.log('Error: ' + error)
})
1: 
Array(3) [1, 2, 3]
2: 
Array(3) [, "xxoo", false]
3: 
Array(3) ["I'm P1", "I'm P2", "I'm P3"]
Error: I'm P3

其中返回的都是promise实例,

第一组是值构成的数组实例

第二组是由函数,字符,boolean构城的实例

第三组是三个promise实例构成的数组实例

第四个是由于reject构成错误,抛出异常,由于P3比P2结束的快,所以抛出P3

综上,promise.all()将所有内容包装城一个新的promise,只不过内部由数组构成而已。

在前端面试中,Promise.all() 是一个常见的问题。它是一个用于处理多个 Promise 对象的方法,返回一个新的 Promise 对象。根据引用所述,Promise.all() 方法接收一个 promise 的 iterable 类型的输入(例如数组),并且只返回一个 Promise 实例。当所有输入的 promise 都成功执行时,Promise.all() 返回的 Promise 对象的 resolve 回调会传递一个包含所有 promise 结果的数组。如果输入的 promise 中有任何一个失败或者输入不合法的 promisePromise.all() 返回的 Promise 对象的 reject 回调会立即抛出错误,并且 reject 的是第一个抛出的错误信息[^2]。 以下是一个示例,演示了如何使用 Promise.all() 方法: ```javascript const promise1 = Promise.resolve(3); const promise2 = 42; const promise3 = new Promise((resolve, reject) => { setTimeout(resolve, 100, 'foo'); }); Promise.all([promise1, promise2, promise3]) .then(values => { console.log(values); // 输出:[3, 42, 'foo'] }) .catch(error => { console.error(error); // 如果有任何一个 promise 失败,会立即抛出错误 }); ``` 在上面的示例中,我们创建了三个 Promise 对象:promise1、promise2 和 promise3。promise1 是一个已经解决的 Promisepromise2 是一个普通的值,promise3 是一个在 100 毫秒后解决的 Promise。我们将这三个 Promise 对象作为参数传递给 Promise.all() 方法。当所有的 Promise 都成功执行时,Promise.all() 返回的 Promise 对象的 resolve 回调会传递一个包含所有 promise 结果的数组。在这个示例中,我们通过 then() 方法获取到了这个数组,并将其打印出来。如果有任何一个 Promise 失败,Promise.all() 返回的 Promise 对象的 reject 回调会立即抛出错误,并且 reject 的是第一个抛出的错误信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值