Spec-Zone.ru › Bluebird

new Promise

new Promise(function(function resolve, function reject) resolver) -> Promise

Создать новую промис. Переданная функция получит функции resolve и reject в качестве аргументов, которые можно вызвать для определения судьбы созданной промис.

Примечание: См. явный шаблон создания антипаттернов перед самостоятельным созданием промисов

Пример:

function ajaxGetAsync(url) {
    return new Promise(function (resolve, reject) {
        var xhr = new XMLHttpRequest;
        xhr.addEventListener("error", reject);
        xhr.addEventListener("load", resolve);
        xhr.open("GET", url);
        xhr.send(null);
    });
}

Если вы передадите объект промис в функцию resolve, созданная промис будет следовать состоянию этой промис.

Чтобы убедиться, что функция, возвращающая промис, следует неявной, но критически важной контракту промисов, можно начать функцию с new Promise, если цепочку нельзя начать немедленно:

function getConnection(urlString) {
    return new Promise(function(resolve) {
        //Without new Promise, this throwing will throw an actual exception
        var params = parse(urlString);
        resolve(getAdapter(params).getConnection());
    });
}

Это гарантирует, что getConnection выполняет контракт функции, возвращающей промис, и никогда не выбрасывает синхронное исключение. Также см. Promise.try и Promise.method

Резолвер вызывается синхронно (следующее предназначено для документации и не является образцом кода):

function getPromiseResolveFn() {
    var res;
    new Promise(function (resolve) {
        res = resolve;
    });
    // res is guaranteed to be set
    return res;
}

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

Spec-Zone.ru

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