Spec-Zone.ru › Bluebird

Promise.method

Promise.method(function(...arguments) fn) -> function

Возвращает новую функцию, которая оборачивает заданную функцию fn. Новая функция всегда будет возвращать промис, который выполняется со значениями возврата исходной функции или отклоняется с исключениями, брошенными исходной функцией.

Этот метод удобен, когда функция может иногда возвращать значение синхронно или выбрасывать исключение синхронно.

Пример без использования Promise.method:

MyClass.prototype.method = function(input) {
    if (!this.isValid(input)) {
        return Promise.reject(new TypeError("input is not valid"));
    }

    if (this.cache(input)) {
        return Promise.resolve(this.someCachedValue);
    }

    return db.queryAsync(input).bind(this).then(function(value) {
        this.someCachedValue = value;
        return value;
    });
};

Используя ту же функцию Promise.method, нет необходимости вручную оборачивать значения возврата или исключения в промис:

MyClass.prototype.method = Promise.method(function(input) {
    if (!this.isValid(input)) {
        throw new TypeError("input is not valid");
    }

    if (this.cache(input)) {
        return this.someCachedValue;
    }

    return db.queryAsync(input).bind(this).then(function(value) {
        this.someCachedValue = value;
        return value;
    });
});

© 2013–2018 Petka Antonov
Licensed under the MIT License.
http://bluebirdjs.com/docs/api/promise.method.html

Spec-Zone.ru

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