Регистрация с 2015 года. Теперь у нас есть native promises в последнем браузере (Edge 12, Firefox 40, Chrome 43, Safari 8, Opera 32 и Android-браузер 4.4 .4 и iOS Safari 8.4, но не Internet Explorer, Opera Mini и более старые версии Android.
Если мы хотим выполнить 10 асинхронных действий и получить уведомление, когда они все закончили, мы можем использовать native Promise.all
, без каких-либо внешних библиотек:
function asyncAction(i) {
return new Promise(function(resolve, reject) {
var result = calculateResult();
if (result.hasError()) {
return reject(result.error);
}
return resolve(result);
});
}
var promises = [];
for (var i=0; i < 10; i++) {
promises.push(asyncAction(i));
}
Promise.all(promises).then(function AcceptHandler(results) {
handleResults(results),
}, function ErrorHandler(error) {
handleError(error);
});