Reputation: 331
I have two sample of async flow.
First one is normal.
function delayPromise(item){
return new Promise(resolve=>setTimeout(resolve, 1000));
}
async function delay(item){
await delayPromise(item);
console.log(item);
}
async function test(){
var arr = [1,2, 3,4, 5, 6];
for(elem of arr){
console.log('starting ' + elem);
await delay(elem);
}
console.log('done');
}
test();
above code gives me the result I expected like below.
starting 1
1
starting 2
2
starting 3
3
starting 4
4
starting 5
5
starting 6
6
done
Second one is changed delayPromise function. I wrote anonymous function in setTimeout callback like below.
function delayPromise(item){
return new Promise(resolve=>setTimeout(()=>resolve, 1000));
}
and result is below.
starting 1
What is different between these code? Why can't I get expected result at second code?
Upvotes: 0
Views: 346
Reputation: 8670
You need tho execute the resolve :
function delayPromise(item){
return new Promise(resolve=>setTimeout(()=>resolve(), 1000));
}
Special attention to : resolve ()
Upvotes: 2