为什么带有setTimeout的async-await Promise循环不起作用?

时间:2019-07-14 02:06:36

标签: javascript loops promise async-await settimeout

我正在尝试使用.map()创建一个循环访问数字数组的循环 我想记录该数组的每个数字,每次迭代之间都有延迟 当我这样做时,我所有的号码都会立即在控制台上登录,而不会延迟

对这里发生的事情有任何想法吗?我想念什么?

我试图用一个基本的for(i)编写循环,但是我只得到第一个显示的数字。

(async () => {

  var numbers = [7, 3, 6, 9, 4, 8];

  await Promise.all(numbers.map(async n => {
    console.log(n);
    await delay(3000);
  }));
  console.log('done');

})();

function delay(time) {
  return new Promise(resolve => {
    setTimeout(resolve, time);
  });
}

这是一个代码段:https://playcode.io/373435?tabs=script.js,preview,console

控制台显示:

7
3
6
9
4
8
'done'

除了每次迭代之间都存在延迟外,所有数字均立即无延迟地记录在控制台上

0 个答案:

没有答案