如何设置 NodeJS 等待事件循环为空后再退出?



我正在编写一个简单的JS文件,它执行一堆我不在乎知道它们状态的承诺。如果我像这样启动节点:node index.js节点将在完成触发承诺后立即退出,而它们仍在后台执行操作。

是否可以将参数传递给node并告诉它等到事件循环为空后再退出?

我确实检查了node --help但没有找到任何可能成为我正在寻找的选项。

重要提示:我不是在寻找代码解决方案,而是要传递给节点本身的参数。

是否可以将

参数传递给节点并告诉它等到事件循环为空后再退出?

不,没有这样的参数。所需的行为是节点中的默认值,无法更改。当事件队列为空且没有正在运行的异步任务时,Node 会退出事件循环。

如果代码中仍在执行操作但未注册任务,则代码中的内容已损坏。

我认为没有这样的功能可以利用来实现预期的结果。但是,如果您希望节点进程等到承诺完成,则可以await它们。

对于任何计时器,nodejs 提供了取消它们的方法 (Doc(。

如果要等待计时器执行,则可以维护全局变量来跟踪计时器的状态。

你的代码需要做一些事情才能让节点继续运行。它可以做的一件事就是等待其他代码完成。有很多方法可以做到。一个简单的示例可能如下所示:

const resolveLater = () => {
return new Promise(resolve => setTimeout(resolve, 5000));
}
resolveLater().then(() => console.log('Done'));

如果需要多个事件,最简单的方法可能是执行单个异步函数来等待所有事件。

例如
const resolveLater = (delay) => {
return new Promise(resolve => setTimeout(resolve, delay));
}
const resolveAll = async () => {
await Promise.all([
resolveLater(1000),
resolveLater(2000),
resolveLater(5000),
]);
}
resolveAll().then(() => console.log('Done'));

除了等待它们完成之外,您不必对承诺做任何事情。你确实关心他们的状态,即使你不关心他们的结果。

最新更新