考虑:
node -e "setTimeout(function() {console.log('abc'); }, 2000);"
这实际上会在程序退出之前等待超时触发。
我基本上想知道这是否意味着节点打算在退出之前等待所有超时完成。
这是我的情况。我的客户有一个 node.js 服务器,他将从 Windows 运行,并带有一个快捷方式图标。如果节点应用程序遇到异常情况,它通常会立即退出,没有足够的时间在控制台中查看错误是什么,这很糟糕。
我的做法是用 try catch 包裹整个程序,所以现在看起来像这样:try { (function () { ... })(); } catch (e) { console.log("EXCEPTION CAUGHT:", e); }
,当然这也会导致程序立即退出。
因此,在这一点上,我想留出大约 10 秒的时间让用户在异常退出之前对其进行查看或截屏。
我想我应该只通过 npm 模块使用阻塞sleep()
,但我在测试中发现设置超时似乎也有效。(即,如果内置的东西有效,为什么还要打扰一个模块?)我想这的意义并不大,但我只是好奇它是否被指定在某个地方,该节点实际上会在退出之前等待所有超时完成,所以这样做我可以感到安全。