当所有异步任务完成后,如何退出NodeJS脚本

16

我在使用NodeJS和Firebase执行一些异步进程。

我想在所有任务完成后,不需要使用Ctrl+C命令就可以停止NodeJS进程执行。

我尝试退出进程,但它会在所有执行都完成之前运行。

如何才能运行完所有异步任务然后退出脚本?

1个回答

24

首先,您所有的异步进程应该是 promises,然后您可以使用 Promise.all 将这些 promises 包装在一个单独的 promise 中,并在该 promise 解析时退出。像这样:

Promise.all([

 promiseForAsynchronousProcess1,
 promiseForAsynchronousProcess2,
 promiseForAsynchronousProcess3,
 ... and so on...

]).then(process.exit);

2
对于像我一样还没有完全思考异步编程的人,如果有其他人也是这样,我之前犯了一个愚蠢的错误。then()需要一个函数(process.exit),而不是一个值(process.exit(0))。后者会在node解析你的promise创建时立即运行并退出。 - moodboom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接