@halalala

Как сделать цикл при помощи asyncawait,итерации которого выполнялись бы параллельно?

var exp = [0,1];
Test();

function Test() {
    return async(function() {
        await([exp.forEach(con)]);  //  (1)
        console.log('finish');
    })();
}

function con(num) {
    return async(function() {
        console.log('start');
        return await(opcha);
    })();
}

function opcha() {
    return new Promise(function(resolve,reject) {
        user.find(function(err,doc) {
            console.log(doc);
            resolve(doc);
        });
    });
}


Выдает следующие:
start
start
finish
[]
[]
А мне нужно,чтоб так:
start
start
[]
[]
finish
Я могу это исправить сделав в строке (1) следующие: await(con), но тогда он будет останавливаться на каждой отдельной итерации, а все таки хотелось бы осуществить параллелизм.

Спасибо за внимание.
  • Вопрос задан
  • 132 просмотра
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
await Promise.all(exp.map(con));
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы