簡體   English   中英

在什么情況下藍鳥的“可能未處理的錯誤”警告可能是錯誤的?

[英]Under what circumstances might bluebird's “Possibly unhandled Error” warning be wrong?

“可能”一詞表示在某些情況下,即使您自己發現錯誤,也可以在控制台中收到此警告。

那是什么情況

在文檔中對此進行了很好的解釋

未處理的拒絕/異常實際上並沒有很好地達成一致的異步通信。 問題在於,無法預測未來並知道是否會最終兌現被拒絕的承諾。

[bluebird解決此問題的方法]是,如果在第二回合開始之前未解決拒絕問題,則調用已注冊的處理程序。 默認處理程序是在瀏覽器中將堆棧跟蹤寫入stderrconsole.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM