hyojoon
hyojoon

Reputation: 613

What is the difference between process.exit() vs return when ending the process?

I wrote a code that ends the process under certain conditions, and when I write it as a return, it ends abnormally due to an over-memory error, and process.exit() ends normally.

P.S. My code is just only one function. So the two method quit the one function.

Can you explain the difference between the two methods when ending the process?

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

Upvotes: 5

Views: 3144

Answers (2)

Dummmy
Dummmy

Reputation: 798

  1. Explicitly calling process.exit forcibly discards some pending asynchronous tasks.

Calling process.exit() will force the process to exit as quickly as possible even if there are still asynchronous operations pending that have not yet completed fully, including I/O operations to process.stdout and process.stderr.

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

  1. process.exit() prevents the beforeExit event from emitting.

The 'beforeExit' event is emitted when Node.js empties its event loop and has no additional work to schedule. Normally, the Node.js process will exit when there is no work scheduled, but a listener registered on the 'beforeExit' event can make asynchronous calls, and thereby cause the Node.js process to continue.

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

Upvotes: 3

Harsh Kanjariya
Harsh Kanjariya

Reputation: 543

return will only stop the function that contains the return statement. process.exit will stop all the running functions and stop all the tasks.

So when you call return it will stop the current function but execute the remaining functions.

Upvotes: 5

Related Questions