errorMessage
errorMessage

Reputation: 331

Node.js Async await control flow break down call function in setTimeout

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

Answers (1)

colxi
colxi

Reputation: 8670

You need tho execute the resolve :

function delayPromise(item){
    return new Promise(resolve=>setTimeout(()=>resolve(), 1000));
}

Special attention to : resolve ()

Upvotes: 2

Related Questions