我可以在 Promise.all() 中有多个 .finally() 以及多个 .catch() 吗?
Can I have multiple .finally() as well as multiple .catch() in Promise.all()?
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
您可以将任意数量的 .finally()
调用链接到任何承诺上。
(Promise.all() returns 一个新的承诺,所以这条规则也适用于此。)
运行 这个,你应该会看到所有 3 条评论记录。
Promise.resolve().
finally(() => console.log('Finally #1')).
finally(() => console.log('Finally #2')).
finally(() => console.log('Finally #3'))
当然,finally
是一个可链接的 promise 方法,就像 catch
一样(唯一的区别是它的回调不接受参数)。您可以根据任何承诺多次使用它。
Promise.all([
p1.finally(() => { console.log("p1 completed"); }),
p2.finally(() => { console.log("p2 completed"); }),
]).finally(() => {
console.log("all() completed");
})
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
您可以将任意数量的 .finally()
调用链接到任何承诺上。
(Promise.all() returns 一个新的承诺,所以这条规则也适用于此。)
运行 这个,你应该会看到所有 3 条评论记录。
Promise.resolve().
finally(() => console.log('Finally #1')).
finally(() => console.log('Finally #2')).
finally(() => console.log('Finally #3'))
当然,finally
是一个可链接的 promise 方法,就像 catch
一样(唯一的区别是它的回调不接受参数)。您可以根据任何承诺多次使用它。
Promise.all([
p1.finally(() => { console.log("p1 completed"); }),
p2.finally(() => { console.log("p2 completed"); }),
]).finally(() => {
console.log("all() completed");
})