.suppressUnhandledRejections
.suppressUnhandledRejections() -> undefined
В сущности, это синтаксический сахар для:
somePromise.catch(function(){});
Что необходимо в случае, если обработчики ошибок прикреплены к обещанию асинхронно позже, что в противном случае приведёт к преждевременному сообщению об ошибке «необработанное отклонение».
Пример:
var tweets = fetchTweets();
$(document).on("ready", function() {
tweets.then(function() {
// Render tweets
}).catch(function(e) {
alert("failed to fetch tweets because: " + e);
});
});
Если получение твитов завершается ошибкой до готовности документа, отказ будет сообщён как необработанный, даже если он будет в конечном итоге обработан, когда документ будет готов. Это, конечно, невозможно определить автоматически, но вы можете сделать это явно, используя .suppressUnhandledRejections():
var tweets = fetchTweets();
tweets.suppressUnhandledRejections();
$(document).on("ready", function() {
tweets.then(function() {
// Render tweets
}).catch(function(e) {
alert("failed to fetch tweets because: " + e);
});
});
Следует отметить, что нет реальной необходимости прикреплять обработчики асинхронно. Точно такой же эффект можно достичь с помощью:
fetchTweets()
.finally(function() {
return $.ready.promise();
})
// DOM guaranteed to be ready after this point
.then(function() {
// Render tweets
})
.catch(function(e) {
alert("failed to fetch tweets because: " + e);
});
Преимущество использования .suppressUnhandledRejections() по сравнению с .catch(function(){}) заключается в том, что оно не увеличивает счётчик ветвей обещания. Счётчики ветвей важны при использовании отмены, потому что обещание будет отменено только в том случае, если все его ветви захотят его отменить.
© 2013–2018 Petka Antonov
Licensed under the MIT License.
http://bluebirdjs.com/docs/api/suppressunhandledrejections.html