Spec-Zone.ru › Bluebird

.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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API