returnวัตถุประสงค์คือการยุติการดำเนินการของการทำงานหลังจากที่ปฏิเสธและป้องกันไม่ให้การดำเนินการของรหัสหลังจากที่มัน
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);
  });
}
ในกรณีนี้จะป้องกันไม่ให้การresolve(numerator / denominator);ดำเนินการซึ่งไม่จำเป็นอย่างเคร่งครัด อย่างไรก็ตามยังคงดีกว่าที่จะยุติการดำเนินการเพื่อป้องกันกับดักที่เป็นไปได้ในอนาคต นอกจากนี้เป็นแนวปฏิบัติที่ดีในการป้องกันการเรียกใช้รหัสโดยไม่จำเป็น
พื้นหลัง 
สัญญาสามารถอยู่ในหนึ่งใน 3 สถานะ:
- รอดำเนินการ - สถานะเริ่มต้น จากการรอดำเนินการเราสามารถย้ายไปยังสถานะอื่น
 
- ปฏิบัติ - สำเร็จ
 
- ปฏิเสธ - การดำเนินการล้มเหลว
 
เมื่อสัญญาเป็นจริงหรือปฏิเสธสัญญานั้นจะคงอยู่ในสถานะนี้ (ตัดสิน) ดังนั้นการปฏิเสธสัญญาที่ได้รับการเติมเต็มหรือการทำตามสัญญาที่ถูกปฏิเสธจะไม่มีผล
ตัวอย่างตัวอย่างนี้แสดงให้เห็นว่าแม้ว่าคำสัญญาจะได้รับการเติมเต็มหลังจากถูกปฏิเสธ แต่ก็ยังคงถูกปฏิเสธ
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));
 
 
แล้วทำไมเราต้องส่งคืน
แม้ว่าเราจะไม่สามารถเปลี่ยนสถานะสัญญาที่ชำระแล้วการปฏิเสธหรือการแก้ไขจะไม่หยุดการดำเนินการของฟังก์ชันที่เหลือ ฟังก์ชั่นอาจมีรหัสที่จะสร้างผลลัพธ์ที่สับสน ตัวอย่างเช่น:
function divide(numerator, denominator) {
  return new Promise((resolve, reject) => {
    if (denominator === 0) {
      reject("Cannot divide by 0");
    }
    
    console.log('operation succeeded');
    resolve(numerator / denominator);
  });
}
divide(5, 0)
  .then((result) => console.log('result: ', result))
  .catch((error) => console.log('error: ', error));
 
 
แม้ว่าฟังก์ชั่นจะไม่มีรหัสดังกล่าวในตอนนี้สิ่งนี้จะสร้างกับดักในอนาคตที่เป็นไปได้ ผู้ปรับโครงสร้างในอนาคตอาจเพิกเฉยต่อความจริงที่ว่ารหัสยังคงดำเนินการหลังจากที่สัญญาถูกปฏิเสธและจะยากที่จะแก้ปัญหา
การหยุดการประมวลผลหลังจากการแก้ไข / ปฏิเสธ:
นี่คือสิ่งที่โฟลว์คอนโทรล JS มาตรฐาน
- ย้อนกลับหลัง
resolve/ reject: 
function divide(numerator, denominator) {
  return new Promise((resolve, reject) => {
    if (denominator === 0) {
      reject("Cannot divide by 0");
      return;
    }
    console.log('operation succeeded');
    resolve(numerator / denominator);
  });
}
divide(5, 0)
  .then((result) => console.log('result: ', result))
  .catch((error) => console.log('error: ', error));
 
 
- Return with the 
resolve/ reject- เนื่องจากค่าที่ส่งคืนของการเรียกกลับถูกเพิกเฉยเราสามารถบันทึกบรรทัดได้โดยส่งคืนคำสั่งปฏิเสธ / แก้ไข: 
function divide(numerator, denominator) {
  return new Promise((resolve, reject) => {
    if (denominator === 0) {
      return reject("Cannot divide by 0");
    }
    console.log('operation succeeded');
    resolve(numerator / denominator);
  });
}
divide(5, 0)
  .then((result) => console.log('result: ', result))
  .catch((error) => console.log('error: ', error));
 
 
function divide(numerator, denominator) {
  return new Promise((resolve, reject) => {
    if (denominator === 0) {
      reject("Cannot divide by 0");
    } else {
      console.log('operation succeeded');
      resolve(numerator / denominator);
    }
  });
}
divide(5, 0)
  .then((result) => console.log('result: ', result))
  .catch((error) => console.log('error: ', error));
 
 
ฉันชอบที่จะใช้หนึ่งในreturnตัวเลือกที่เป็นรหัสประจบ