ด้วยสัญญาทำไมเบราว์เซอร์กลับปฏิเสธสองครั้ง แต่ไม่ได้รับการแก้ไขสองครั้ง?
ฉันมีปัญหาในการทำความเข้าใจ promisesjavaScript ฉันเขียนรหัสต่อไปนี้: var p = new Promise(function(resolve,reject){ reject(Error("hello world")); }); setTimeout(()=>p.catch(e=>console.log(e)),5000); ฉันเห็นสิ่งนี้ในคอนโซลนักพัฒนาซอฟต์แวร์ Chrome ทันที: แต่หลังจากฉันรอ 5 วินาทีข้อความจะเปลี่ยนเป็นสีดำเหมือนภาพนี้โดยอัตโนมัติ: ฉันไม่เคยเห็นพฤติกรรมนี้มาก่อนระหว่างรหัส javaScript ของฉันและคอนโซลนักพัฒนาซอฟต์แวร์ซึ่งรหัส javaScript ของฉันสามารถ "แก้ไขเนื้อหาที่มีอยู่" ในคอนโซลนักพัฒนาซอฟต์แวร์ ดังนั้นฉันตัดสินใจที่จะดูว่าสถานการณ์เดียวกันเกิดขึ้นกับresolveการเขียนรหัสนี้: var p = new Promise(function(resolve,reject){ resolve("hello world"); }); setTimeout(()=>p.then(e=>console.log(e)),5000); แต่ในสถานการณ์นี้คอนโซลนักพัฒนาซอฟต์แวร์ของฉันจะไม่แสดงผลใด ๆ จนกว่าจะถึง 5 วินาทีหลังจากนั้นซึ่งจะพิมพ์hello worldออกมา ทำไมresolveและrejectได้รับการปฏิบัติที่แตกต่างกันในแง่ของเมื่อพวกเขาถูกเรียก? EXTRA ฉันยังเขียนรหัสนี้: var p = new Promise(function(resolve,reject){ reject(Error("hello …