async
- это устаревшая библиотека, которая решала те же проблемы, что и обещания, до распространения шаблона обещаний и появления нативных обещаний. async
библиотека основана на обратном вызове и не знает об обещаниях и async
функциях , которые являются синтаксическим сахаром для обещаний ES6.
Фрагмент работает, потому что Promise.all
ожидает массив обещаний:
Promise.all(promises);
И массив обещаний предоставляется с массивом map
с async
обратным вызовом функции:
someArray.map(async item => { ... })
Это не будет работать с библиотекой async
, потому что она должна работать с функцией итераций на основе обратного вызова и не знает об обещаниях, которые возвращает async
функция.
Поскольку в обещаниях ES6 отсутствуют некоторые расширенные функции из библиотеки async
, их можно дополнить с помощью Bluebird API или обещания ponyfills .