Node.js Асинхронное ожидание функции вызова прерывания потока управления в setTimeout - PullRequest
0 голосов
/ 04 мая 2018

У меня есть два образца асинхронного потока.

Первый нормальный.

 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();

код выше дает мне ожидаемый результат, как показано ниже.

starting 1
1
starting 2
2
starting 3
3
starting 4
4
starting 5
5
starting 6
6
done

Второй - это функция delayPromise. Я написал анонимную функцию в обратном вызове setTimeout, как показано ниже.

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

и результат ниже.

starting 1

Чем отличается этот код? Почему я не могу получить ожидаемый результат во втором коде?

1 Ответ

0 голосов
/ 04 мая 2018

Вам необходимо выполнить решение:

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

Особое внимание: решить ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...