Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js javascript:async/await–;传播需要整个呼叫链向上吗?_Node.js_Async Await_Ecmascript 2017 - Fatal编程技术网

Node.js javascript:async/await–;传播需要整个呼叫链向上吗?

Node.js javascript:async/await–;传播需要整个呼叫链向上吗?,node.js,async-await,ecmascript-2017,Node.js,Async Await,Ecmascript 2017,我正在将一个返回承诺的函数包装成一个小助手函数上的async函数 trash(filesArray, { glob: false }) .then(() => { resolve(true); }).catch((err) => { return err; }) …因为我喜欢在下一个更高级别上使用wait同步使用它: async empty(liveMode, force) { … await helpers.trashSync(trash

我正在将一个返回承诺的函数包装成一个小助手函数上的
async
函数

trash(filesArray, {
    glob: false
})
.then(() => {
    resolve(true);
}).catch((err) =>  {
    return err;
})
…因为我喜欢在下一个更高级别上使用
wait
同步使用它:

async empty(liveMode, force) {
    …
    await helpers.trashSync(trashFiles);
    // then doing further stuff...
}
当然,这意味着我需要再次使用
async
关键字。。。(否则,我被告知
await
是一个“未知保留”字或诸如此类),如果我没有弄错,我现在需要在下一个更高级别上再次使用
await

await memberSet.empty(true, false)
这个“游戏”会一直持续到我的应用程序中吗?所以到最后,只要有一个小小的异步函数,我就有大量的
async
/
wait


还是我只是错过了停止的点?

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


您需要找到一个点,在这个点上,您的调用堆栈自然希望返回一个承诺,或者不关心它是否异步完成。

“我喜欢使用它同步”——这是不可能的。异步函数总是在将来完成。“使用等待”只会使您的函数异步,也就是说,返回一个承诺,该承诺在等待之后在将来解决。您可能想看看。另外