我在理解 javaScript 時遇到問題promises。我寫了以下代碼: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被調用的時間如此不同?額外的我也寫了這段代碼:var p = new Promise(function(resolve,reject){ reject(Error("hello world"));});setTimeout(()=>p.catch(e=>console.log("errors",e)),5000);setTimeout(()=>p.catch(e=>console.log("errors 2",e)),6000);setTimeout(()=>p.catch(null),7000);這會導致多個輸出到開發人員控制臺。在時間 0 時出現紅色錯誤,在 5 秒時紅色變為黑色并帶有文本errors hello world,然后在 6 秒時出現新的錯誤消息errors 2 hello world,然后在 7 秒時出現紅色錯誤消息。現在我對reject實際調用了多少次感到非常困惑......我迷路了......
使用 Promise,為什么瀏覽器會返回拒絕兩次而不是解決兩次?
qq_遁去的一_1
2021-11-12 18:20:10