Устаревшие API
Данная статья частично или полностью не завершена. Вы можете помочь завершить её, создав pull request.
Этот файл содержит документацию для API, которые больше не поддерживаются Bluebird. Эти API всё ещё работают в Bluebird, но будут удалены в будущих версиях библиотеки.
Для каждого случая использования, который решают методы ниже, существует лучшая альтернатива в справочнике API.
Прогресс
Старый 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