我在脚本中有一个函数链node 4.3,看起来像回调 -> 承诺 -> async/await -> async/await -> async/await
像这样:
const topLevel = (resolve, reject) => {
const foo = doThing(data)
.then(results => {
resolve(results)
})
.catch(err => {
reject(err)
})
}
async function doThing(data) {
const thing = await doAnotherThing(data)
return thing
}
async function doAnotherThing(data) {
const thingDone = await etcFunction(data)
return thingDone
}
(之所以没有async/await全部通过,是因为顶层函数是一个任务队列库,表面上不能运行async/await样式)
如果etcFunction()抛出,error泡沫会一直上升到顶层Promise吗?
如果没有,我怎么能冒泡errors?我是否需要像这样将每个都包装await在 atry/catch和throw从那里开始?
async function doAnotherThing(data) {
try {
await etcFunction(data)
} catch(err) {
throw err
}
}