首页 > 解决方案 > 我可以在 Promise.all() 中有多个 .finally() 和多个 .catch() 吗?

问题描述

var p1 = new Promise((resolve, reject) => {

        resolve('p1');
    });

    var p2 = new Promise((resolve, reject) => {
        resolve('p2');
    });
    Promise.all([
        p1.finally(() => { console.log("p1 completed"); }),
        p2.finally(() => { console.log("p2 completed"); }),
    ]).then(values => {
        console.log(values[0]);
        console.log(values[1]);
    }).finally(() => {
        console.log("all() completed");
  

我想我只在网络上看到了结尾有一个 .finally() 的示例 [1]:https ://i.stack.imgur.com/HeQV8.png

标签: javascriptasynchronouspromisepromise.all

解决方案


当然,finally是一个可链接的 promise 方法,就像catch(唯一的区别是它的回调不带参数)。您可以根据任何承诺多次使用它。

Promise.all([
    p1.finally(() => { console.log("p1 completed"); }),
    p2.finally(() => { console.log("p2 completed"); }),
]).finally(() => {
    console.log("all() completed");
})

推荐阅读