【发布时间】:2019-12-10 05:23:49
【问题描述】:
process.exitcode 和 process.exit() 有什么区别? 如果我使用 process.exitode = 1 和 process.exit(1) 这会产生任何差异还是只是一种替代方式?
【问题讨论】:
process.exitcode 和 process.exit() 有什么区别? 如果我使用 process.exitode = 1 和 process.exit(1) 这会产生任何差异还是只是一种替代方式?
【问题讨论】:
process.exitcode = 1 不会做任何相应的事情。小心大写。
当进程正常退出或通过 process.exit() 退出而不指定代码时,将作为进程退出代码的数字。
因此,
process.exitCode = 1;
// ...
process.exit();
等价于
process.exit(1);
值得注意的是,
process.exitCode = 1;
process.exitCode = 2;
process.exit();
不等于
process.exit(1);
process.exit(2);
还有,
process.exitCode = 1;
console.log("bye");
process.exit();
不等于
process.exit(1);
console.log("bye");
【讨论】:
process.exitCode = 1 不会退出。他们都工作,但他们做的事情不同。
process.exitCode = 1 不会退出。它与异步无关。要退出,您需要调用process.exit,或者您需要用完脚本。请再次阅读报价;它没有说明退出。分配给process.exitCode 不会退出。执行process.exitCode = 1时没有退出。
process.exit,因为process.exit 是突然的并且不允许事情很好地清理。同样,process.exitCode = 1 不会像 let x = 3 那样退出;这是程序确实结束时的设置步骤 - 无论是自然结束,还是由process.exit 不带参数。
是的,有区别。
process.exitCode 只设置进程最终退出时将使用的退出代码。它不会告诉进程退出,只告诉进程退出时使用什么代码。
process.exit([code]) 将使用给定的退出代码终止进程,或者使用 process.exitCode 的值(如果已设置)或默认退出代码 0(成功)。
不同之处在于exit 将尽快退出(在调用所有“退出”事件侦听器之后),即使有挂起的异步操作,包括 I/O 操作。这可能会导致令人惊讶的行为!
如果您不需要尽快退出,或者您的代码有很多异步操作,使用exitCode 并在所有操作完成后让进程优雅退出会更安全。
【讨论】: