gpt4 book ai didi

javascript - 执行一个 promise 循环并捕获过程中的错误

转载 作者:行者123 更新时间:2023-11-29 10:33:59 24 4
gpt4 key购买 nike

所以这是来自@Roamer-1888 的真正美丽:

executePromiseLoop(myArray).catch(logError).then(() => console.log('yay!'));

function executePromiseLoop(arr) {
return arr.reduce(function(promise, email) {
return promise.then(function() {
return myCustomPromise(email);
});
}, Promise.resolve());
}

这是一个连续执行的 promise 循环。我有两个担忧:

  1. 如果循环中的 promise 失败会发生什么,它会退出循环吗?
  2. 我应该在循环内实现捕获,还是将失败传播回调用函数?

我应该在循环中插入一个 catch 吗?

function executePromiseLoop(arr) {
return arr.reduce(function(promise, email) {
return promise.catch(logError).then(function() {
return myCustomPromise(email);
});
}, Promise.resolve());
}

最佳答案

What happens if a promise in the loop fails, does it quit the loop?

是的。如果一个 promise 被拒绝,接下来的所有 promise 都不会被执行。例如,请参阅此代码:

Promise.resolve()
.then(Promise.reject)
.then(() => console.log('this will not be executed'))
.catch(() => console.log('error'))

第三行的promise不会被执行,因为之前的promise被拒绝了。

Should I implement a catch inside the loop, or will a fail propagate back up to the calling function?

拒绝消息将传播,因此您无需在循环内使用 catch。例如,请参阅此代码:

Promise.resolve()
.then(() => Promise.resolve())
.then(() => Promise.reject('something went wrong'))
.then(() => Promise.resolve())
.then(() => Promise.resolve())
.catch(error => console.log(error))

关于javascript - 执行一个 promise 循环并捕获过程中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39809744/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com