0

我写了一段代码,在一定条件下结束进程,当我写成areturn时,由于内存溢出错误异常结束,process.exit()正常结束。

PS我的代码只是一个功能。所以这两种方法退出了一个功能。

结束流程时,您能解释一下这两种方法的区别吗?

if(condition === true)
    process.exit();
if(condition === true)
    return;
4

2 回答 2

3

return 只会停止包含 return 语句的函数。process.exit 将停止所有正在运行的函数并停止所有任务。

因此,当您调用 return 时,它将停止当前函数但执行剩余的函数。

于 2021-08-31T06:45:03.390 回答
1
  1. 显式调用process.exit会强制丢弃一些挂起的异步任务。

调用 process.exit() 将强制进程尽快退出,即使仍有尚未完全完成的异步操作挂起,包括对 process.stdout 和 process.stderr 的 I/O 操作。

-- https://nodejs.org/api/process.html#process_process_exit_code

  1. process.exit()防止beforeExit事件发出。

当 Node.js 清空其事件循环并且没有额外的工作要安排时,会发出 'beforeExit' 事件。通常情况下,Node.js 进程会在没有安排工作时退出,但在 'beforeExit' 事件上注册的监听器可以进行异步调用,从而使 Node.js 进程继续。

-- https://nodejs.org/api/process.html#process_event_exit

于 2021-08-31T06:53:28.557 回答