Какую версию async вы используете?
2.5.0
В какой среде возникла проблема (версия узла / версия браузера)
Версия ОС: OS X 10.12.6
Версия узла: 8.4.0
Версия браузера: N / A
Что ты сделал?
// templateNames is an array of strings
async.map(templateNames, async (templateName, next) => {
let template;
try {
template = await utils.getFile(templateName);
} catch(err) {
next(err);
}
...
// and so on
Чего вы ожидали?
next
- итеративная функция
Каков был реальный результат?
next
равно undefined
Я закончил тем, что просто использовал синтаксис .then().catch()
для достижения своей цели, но все же хотел поделиться им, используя AsyncFunction
( ПРИМЕЧАНИЕ: это не определение async
а родное AsyncFunction
Object ) приводит к тому, что итерация ( next
) имеет тип undefined
.
async
функции обрабатываются иначе, начиная с 2.3.0 - им не передается обратный вызов. Вместо этого просто верните значение (или обещание). Фактически, в вашем примере даже try
/ catch
не требуется, потому что любые выданные ошибки будут перехвачены Async. Это должно немного упростить ваш код.
// templateNames is an array of strings
async.map(templateNames, async templateName => {
const template = await utils.getFile(templateName);
...
// and so on
AsyncFunction
документы: http://caolan.github.io/async/global.html
🤦♂️ Было бы разумно прочитать эту часть документов более четко. Спасибо.
Честно говоря, это описание не так очевидно на сайте документации ... 🙄 📜
Я вообще-то думаю, что это довольно ясно. Сначала я просмотрел документы и пропустил эту часть.
Самый полезный комментарий
async
функции обрабатываются иначе, начиная с 2.3.0 - им не передается обратный вызов. Вместо этого просто верните значение (или обещание). Фактически, в вашем примере дажеtry
/catch
не требуется, потому что любые выданные ошибки будут перехвачены Async. Это должно немного упростить ваш код.AsyncFunction
документы: http://caolan.github.io/async/global.html