Spec-Zone.ru › Bluebird

Устаревшие API

Данная статья частично или полностью не завершена. Вы можете помочь завершить её, создав pull request.

Этот файл содержит документацию для API, которые больше не поддерживаются Bluebird. Эти API всё ещё работают в Bluebird, но будут удалены в будущих версиях библиотеки.

Для каждого случая использования, который решают методы ниже, существует лучшая альтернатива в справочнике API.

  • Прогресс

    • .progressed(Function handler)
    • .then([Function fulfilledHandler] [, Function rejectedHandler ] [, Function progressHandler ])
    • .done([Function fulfilledHandler] [, Function rejectedHandler ] [, Function progressHandler ])
  • Разрешение обещаний

    • .resolve(dynamic value)
    • .reject(dynamic reason)
    • .progress(dynamic value)
    • .callback
    • Отмена обещаний (старая версия)

Прогресс

Старый API прогресса предназначался для отслеживания прогресса выполнения обещания. Оглядываясь назад, он не работал и не был хорошо сочетаем с другими инструментами. Сейчас мы лучше понимаем эту проблему, и случай использования может быть лучше решён без него.

См. Миграцию API прогресса для помощи при миграции и примеров преобразования API, использующих прогресс, в API, которые его не используют.

.progressed(Function handler) -> Promise

Сокращённая запись для .then(null, null, handler);. Присоединяет обработчик прогресса, который будет вызван, если это обещание будет иметь прогресс. Возвращает новое обещание, связанное с этим обещанием.

.then([Function fulfilledHandler] [, Function rejectedHandler ] [, Function progressHandler ]) -> Promise

Стандартный Promises/A+ .then() всё ещё поддерживается Bluebird и будет поддерживаться неопределённо долго. Однако вариант, принимающий третий progressHandler аргумент, больше не поддерживается.

.done([Function fulfilledHandler] [, Function rejectedHandler ] [, Function progressHandler ]) -> void

Как и .then(), но любая необработанная ошибка, которая попадет сюда, будет выброшена как ошибка. Опять же, только вариант с обработчиком прогресса устарел здесь. .done по-прежнему полностью поддерживается.

Разрешение обещаний

Можно использовать PromiseResolver для управления судьбой обещания. Это аналогично "Deferred" в jQuery или $q.defer в $q. Объекты PromiseResolver имеют свойство .promise, которое возвращает ссылку на управляемое обещание, которое может быть передано клиентам. .promise объекта PromiseResolver не является функцией-геттером для соответствия другим реализациям.

Методы объекта PromiseResolver не имеют эффекта, если судьба базового обещания уже определена (следовать, отклонить, выполнить).

Использование Promise.defer и объектов deferred не рекомендуется — оно намного сложнее и подвержено ошибкам, чем использование new Promise.

.resolve(dynamic value) -> undefined

Разрешить базовое обещание со значением разрешения value. Если value является thenable или обещанием, базовое обещание примет его состояние.

.reject(dynamic reason) -> undefined

Отклонить базовое обещание с причиной отклонения reason.

.progress(dynamic value) -> undefined

Указать прогресс базового обещания со значением прогресса value.

Пример

function delay(ms) {
    var resolver = Promise.defer();
    var now = Date.now();
    setTimeout(function(){
        resolver.resolve(Date.now() - now);
    }, ms);
    return resolver.promise;
}

delay(500).then(function(ms){
    console.log(ms + " ms passed");
});

Отмена обещаний (старая версия)

В версии 2.x отмена обещаний выглядела иначе. Отмена обещаний получила значительную переработку в версии 3 для создания надёжной версии отменяемых обещаний. Вы всё ещё можете использовать отмену 2.x с bluebird 2.x (которая всё ещё поддерживается, но не рекомендуется). См. Отмена для получения дополнительной информации. Документация 2.x доступна по-прежнему по ветке 2.x.

© 2013–2018 Petka Antonov
Licensed under the MIT License.
http://bluebirdjs.com/docs/deprecated-apis.html

Spec-Zone.ru

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