Задать вопрос
Fragster
@Fragster
помогло? отметь решением!

Как правильно обработать массив с вызовом асинхронной функции?

Пытаюсь разобраться с promise и вызовом асинхронной функции в цикле.
Не получается сделать так, чтобы результатом reduce был промис, который должен выполниться в самом конце
arr = [1,2,3,4,5];

function timeout(val){
    return new Promise((resolve, reject)=>{
        setTimeout(()=>{
            console.log(val);
            resolve();
        }, 500);
    });
}

arr.reduce((prev, curr, index, arr)=>{
    return prev.then((res)=>{
        return timeout(curr);
    });
}, Promise.resolve())
        .then(console.log('res'));

почему-то выводит res в начале, а потом уже содержимое массива:
res
1
2
3
4
5
  • Вопрос задан
  • 149 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@Aves
В метод then аргументом нужно функцию передавать() => console.log('res') ну или console.log.bind(console, 'res')
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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