У меня было несколько обещаний, которые делают то же самое, я надеялся программно добавить к ним оператор catch
, а затем запустить на них Promise.all.У меня было несколько идей для достижения этой цели, но это продолжает взрываться у меня на лице.
let promises = [
Promise.reject('derp'), // Naïve test
new Promise((resolve, reject) => { // Assumed this ran out of main loop
reject('whayyy')
}),
new Promise((resolve, reject) => { // really assumed this ran out of main loop
process.nextTick(() => reject('nooooon'))
})
]
//fails
for(let promise of promises){
promise.catch((err) => { return 'fixed programatically'} )
}
Promise.all(promises).then((things) => {
console.log("Expect to make it here with no problems")
console.log(things)
})
Я продолжаю получать это для всех трех обещаний:
(node:25148) UnhandledPromiseRejectionWarning: derp|whayy|nooooon
(node:25148) UnhandledPromiseRejectionWarning: Unhandled promise rejection.
This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 2)
Кто-нибудь знает, как правильносделать это?
Редактировать: я не уверен, почему, я перезапустил оригинальный код и больше не получаю никаких ошибок.(