Do I need to return after early resolve/reject? Do I need to return after early resolve/reject? javascript javascript

Do I need to return after early resolve/reject?


The return purpose is to terminate the execution of the function after the rejection, and prevent the execution of the code after it.

function divide(numerator, denominator) {  return new Promise((resolve, reject) => {    if (denominator === 0) {      reject("Cannot divide by 0");      return; // The function execution ends here     }    resolve(numerator / denominator);  });}

In this case it prevents the resolve(numerator / denominator); from executing, which is not strictly needed. However, it's still preferable to terminate the execution to prevent a possible trap in the future. In addition, it's a good practice to prevent running code needlessly.

Background

A promise can be in one of 3 states:

  1. pending - initial state. From pending we can move to one of the other states
  2. fulfilled - successful operation
  3. rejected - failed operation

When a promise is fulfilled or rejected, it will stay in this state indefinitely (settled). So, rejecting a fulfilled promise or fulfilling a rejected promise, will have not effect.

This example snippet shows that although the promise was fulfilled after being rejected, it stayed rejected.

function divide(numerator, denominator) {  return new Promise((resolve, reject) => {    if (denominator === 0) {      reject("Cannot divide by 0");    }    resolve(numerator / denominator);  });}divide(5,0)  .then((result) => console.log('result: ', result))  .catch((error) => console.log('error: ', error));