Можете ли вы использовать async await внутри функции async.series?
Я провел несколько простых экспериментов, но они не сработали так, как ожидалось.
Да, ты можешь! Но вместо использования обратного вызова просто верните значение или выдайте ошибку. http://caolan.github.io/async/global.html
Хорошо - простите меня, пожалуйста, Если я что-то неправильно понял 😄 Как это?
const result = await async.each(openFiles, async (file) => {
try: {
await asyncOperation(file);
return null
} catch(err) {
return err
}
})
Поскольку async
функции автоматически преобразуют ошибки в отклонения, ваш пример можно свести к следующему:
const result = await async.each(openFiles, async (file) => {
await asyncOperation(file);
})
Спасибо за улучшенный фрагмент. Кажется, это работает в простом сценарии, но в следующих настройках я не могу заставить его работать:
for (const tasks of fileTasks) {
const result = await async.each(tasks, async (file) => {
await asyncOperation(file);
})
}
Я понимал, что цикл for-of допускает асинхронные операции?
Поскольку async.each
не возвращает Promise, вы не можете await
это.
А, ну ладно. Таким образом, использование параметра for-of async / await не является хорошим шаблоном для async. А теперь, если это входит в план развития асинхронного режима?
Планируется какая-то безумная наука. 😉
Или util.promisify()
😉
(или pify()
)
Почему здесь вопрос о async.series
переходит в async.each
?
const _async = require('async');
const _ = require('lodash');
public doSomething = async(num) : Promise<any> => {
return num*num + 1;
}
public async getResults() {
let results = new Array<any>();
let tasks = [];
try {
const list = [1,2,3,4,5,6,7,8,9,10];
list.forEach((item) => {
tasks.push((callback) => {
this.doSomething(item.then(
(res) => {
results.push(res);
callback(null, res);
}
);
})
})
results = await new Promise((resolve) => {
_async.series(tasks, (err, res) => {
console.log(res);
if (err) {
results.push(err);
}
resolve(results);
})
});
} catch (err) {
results.push(err.message);
console.log(err);
}
return _.join(results, '\r\n');
}
@aearly Привет, фен, не могли бы вы сказать мне, какая версия extracly поддерживает async / await?
Я использую caolan / async версии 2.6.0
Самый полезный комментарий
Планируется какая-то безумная наука. 😉