javascript:async / await - 传播需要整个调用链吗?

时间:2018-04-15 13:01:37

标签: node.js async-await ecmascript-2017

我正在包装一个函数,将一个promises返回到一个小辅助函数的async函数中......

trash(filesArray, {
    glob: false
})
.then(() => {
    resolve(true);
}).catch((err) =>  {
    return err;
})

...因为我喜欢在下一个更高级别使用await同步使用它:

async empty(liveMode, force) {
    …
    await helpers.trashSync(trashFiles);
    // then doing further stuff...
}

当然,这意味着,我需要再次使用async关键字...(否则我被告知await是一个'未知的保留'字或者等等)如果我不是错了,我现在需要在下一个更高级别再次使用await

await memberSet.empty(true, false)

这个“游戏”是否会在我的应用程序中一直持续下去,所以到最后,我有很多async / await,无论在哪里&#39 ;包含一个微小的异步函数?

或者我只是错过了停止的地方?

1 个答案:

答案 0 :(得分:0)

您无法将异步函数转换为同步函数,async / await的目的是允许您编写具有与同步调用类似的代码路径的代码,但允许事件循环可重入并且因此更细粒度。生成器/产量是中断执行流程的另一种方法。

您需要找到一个点,您的调用堆栈自然需要返回的promise,或者不关心它是否异步完成。