Пытаюсь разобраться с 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