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