Node 中的 abort() 和 exit() 有啥区别?
Posted
技术标签:
【中文标题】Node 中的 abort() 和 exit() 有啥区别?【英文标题】:What's the difference between abort() and exit() in Node?Node 中的 abort() 和 exit() 有什么区别? 【发布时间】:2016-10-09 17:34:37 【问题描述】:我注意到process.exit()
和process.abort()
都停止了脚本。除了一个日志Aborted
之外,两者还有什么区别?
【问题讨论】:
【参考方案1】:process.abort()
立即停止进程。
process.exit([exitCode])
方法指示 Node.js 尽快终止进程。您还可以指定退出代码。
退出代码:
0
表示进程已成功退出。
1
表示异常结束。
如果省略,0
是默认值。
【讨论】:
“尽快”是什么意思?这种模式和“立即”有什么不同? @BeenoTung 我发现某些代码可能会在调用 process.exit() 时阻止退出。在这些情况下,我需要调用 process.abort()。我仍在试图弄清楚究竟是什么阻止了 process.exit()。我知道这是主动请求队列中的某些东西,但我不知道是什么......【参考方案2】:调用process.exit()
将强制进程尽快退出,即使仍有尚未完全完成的异步操作挂起,包括对 process.stdout 和 process.stderr 的 I/O 操作。
退出进程的正确推荐方法是设置退出代码并允许进程自然退出,因为调用process.exit()
会强制进程在执行任何其他写入标准输出之前退出。
process.exitCode = 1;
如果由于错误情况需要终止 Node.js 进程,则抛出未捕获的错误并允许进程相应地终止比调用 process.exit() 更安全。
process.abort()
方法导致 Node.js 进程立即退出并生成核心文件。
【讨论】:
【参考方案3】:process.exit() 方法指示 Node.js 使用指定的退出代码尽快终止进程。
如果代码为0
,则表示作为成功案例存在。
如果代码是1
,则表示作为失败案例存在。
还有
process.abort() 方法使 Node.js 进程立即退出并生成核心文件。
除了这些,我没有看到更多的不同
【讨论】:
【参考方案4】:abort
- 这会导致进程异常终止。
exit
- 函数导致正常进程终止
【讨论】:
以上是关于Node 中的 abort() 和 exit() 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
Delphi中break,exit,abort跳出循环的比较