ตามที่ฉันเข้าใจคำสัญญาคือสิ่งที่สามารถแก้ไข () หรือปฏิเสธ () ได้ แต่ฉันรู้สึกแปลกใจที่พบว่ารหัสในสัญญายังคงดำเนินการต่อไปหลังจากมีการเรียกการแก้ไขหรือปฏิเสธ
ฉันถือว่าการแก้ไขหรือปฏิเสธเป็นเวอร์ชันที่เป็นมิตรกับสิ่งแวดล้อมของ exit หรือ return ซึ่งจะหยุดการทำงานของฟังก์ชันทันทีทั้งหมด
ใครช่วยอธิบายความคิดเบื้องหลังว่าทำไมบางครั้งตัวอย่างต่อไปนี้จึงแสดง console.log หลังจากการโทรแก้ไข:
var call = function() {
return new Promise(function(resolve, reject) {
resolve();
console.log("Doing more stuff, should not be visible after a resolve!");
});
};
call().then(function() {
console.log("resolved");
});
resolve()
ไม่ใช่คำสั่งควบคุม JS ที่จะมีผลอย่างน่าอัศจรรย์return
มันเป็นเพียงการเรียกใช้ฟังก์ชันและใช่การดำเนินการจะดำเนินต่อไปหลังจากนั้น