我在脚本中有一个函数链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
}
}