[英]Under what circumstances might bluebird's “Possibly unhandled Error” warning be wrong?
“可能”一詞表示在某些情況下,即使您自己發現錯誤,也可以在控制台中收到此警告。
那是什么情況
未處理的拒絕/異常實際上並沒有很好地達成一致的異步通信。 問題在於,無法預測未來並知道是否會最終兌現被拒絕的承諾。
[bluebird解決此問題的方法]是,如果在第二回合開始之前未解決拒絕問題,則調用已注冊的處理程序。 默認處理程序是在瀏覽器中將堆棧跟蹤寫入
stderr
或console.error
。 這接近於同步代碼所發生的情況-您的代碼無法按預期運行,並且您打開控制台並看到堆棧跟蹤。 真好當然,這不是完美的,如果您的代碼由於某種原因需要進入,並在承諾已經徘徊了一段時間之后將錯誤處理程序附加到某個承諾,那么您會看到令人討厭的消息。
因此,例如,這可能會警告未處理的錯誤,即使它會得到很好的處理:
var prom = Promise.reject("error");
setTimeout(function() {
prom.catch(function(err) {
console.log(err, "got handled");
});
}, 500);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.