【发布时间】:2019-07-05 13:37:31
【问题描述】:
我有一系列可以解决或拒绝的异步函数。此功能必须以正确的顺序执行,并且相互依赖。所以,我使用了 3 个异步函数和一个 try catch 块。问题是当我拒绝异步函数中的某些承诺时,catch 块不会收到拒绝回调发送的错误。如何获得拒绝发送的错误? (代码如下)
或者我应该使用承诺链?我想避免这种情况...
const methods = {
methodOne: async output => {
return new Promise( (resolve, reject) => {
if(error)
reject(error) // want to get this error in try/catch block
else
resolve()
})
})
},
methodTwo: async () => {
return new Promise( (resolve, reject) => {
if(error)
reject(error)
else
resolve('output')
})
})
},
methodThree: async () => {
return new Promise( (resolve, reject) => {
if(error)
reject(error)
else
resolve()
})
})
},
runMethods: async () => {
return new Promise( async (resolve, reject) => {
try {
await methods.methodOne()
const output = await methods.methodTwo()
await methods.methodThree(output)
resolve()
} catch(error) {
console.log(error)
reject(error)
}
})
}
}
【问题讨论】:
-
"
if(error)" -error变量未在您的代码中声明,因此您从不拒绝任何承诺? -
"catch 块不会收到在拒绝回调中发送的错误。" - 如果您确实拒绝了其中一个承诺,它确实会收到。你能提供一个实际的minimal reproducible example吗?
标签: javascript