Spec-Zone.ru › Bluebird

Promise.some

Promise.some(
    Iterable<any>|Promise<Iterable<any>> input,
    int count
) -> Promise

Дано Iterable(массивы являются Iterable), или обещание массива Iterable, которое порождает обещания (или смесь обещаний и значений), перебирает все значения в Iterable в массив и возвращает обещание, которое выполняется, как только count обещания в массиве выполнены. Значение выполнения — это массив с count значениями в порядке их выполнения.

Этот пример отправляет запросы к 4 серверам имен и выводит на консоль 2 самых быстрых:

Promise.some([
    ping("ns1.example.com"),
    ping("ns2.example.com"),
    ping("ns3.example.com"),
    ping("ns4.example.com")
], 2).spread(function(first, second) {
    console.log(first, second);
});

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

Вы можете получить ссылку на AggregateError из Promise.AggregateError.

Promise.some(...)
    .then(...)
    .then(...)
    .catch(Promise.AggregateError, function(err) {
        err.forEach(function(e) {
            console.error(e.stack);
        });
    });

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

Spec-Zone.ru

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