首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

for循环中的setTimeout不会打印连续值

在JavaScript中,for循环中的setTimeout函数不会按预期打印连续值,因为setTimeout是异步的,它会在指定的时间后执行,但不会等待前一个setTimeout完成。这会导致所有的setTimeout函数同时执行,并且在循环结束后才会打印值。

为了解决这个问题,可以使用setTimeout的嵌套方式来实现连续打印值,或者使用async/awaitPromise来实现。

以下是使用setTimeout嵌套的方式:

代码语言:javascript
复制
function printValues(i, n) {
  if (i > n) {
    return;
  }
  setTimeout(function() {
    console.log(i);
    printValues(i + 1, n);
  }, 1000);
}
printValues(1, 5);

以下是使用async/awaitPromise的方式:

代码语言:javascript
复制
function delay(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

async function printValues(n) {
  for (let i = 1; i <= n; i++) {
    await delay(1000);
    console.log(i);
  }
}
printValues(5);

这两种方式都可以实现在for循环中使用setTimeout按预期打印连续值。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券