javascript - for 循环,迭代之间有 sleep

标签 javascript typescript

我有一个巨大的嵌套for循环,需要在嵌套循环else block 的每次迭代中每隔1秒休眠一次。这通常使用如下代码执行:

for (let i=1; i<10; i++) {
    setTimeout( function timer(){
        alert("hello world");
    }, i*3000 );
}

我读到的这篇文章太占用内存,不应该使用它。

这是我到目前为止的代码:

  for (var i = 0; i < this.data.length; i++) {
    if (this.data[i].dataTypes.length > 0) {
      for (var j = 0; this.data[i].dataTypes.length; j++) {
        //performed each second
        this.setData(this.data[i].dataName, this.data[i].dataTypes[j]);
      }
    } else {
      //performed each second
      this.setData(this.data[i].dataName, "");
    }
  }

我应该如何重写它,以便嵌套循环或其他 block 每秒执行一次?

最佳答案

如果你不喜欢 for 循环,你可以这样做

function sleep(n){
    return new Promise(res => setTimeout(res, n));
}

async function doStuff(){
    for(let element of myList){
        doMoreStuff();
        await sleep(1000);
    }
}

https://jsfiddle.net/DerekL/y7m0qv51/

function doStuff(i){
    doMoreStuff(myList[i]);
    setTimeout(() => doStuff(i + 1), 1000);
}

https://jsfiddle.net/DerekL/rh8m6h94/

但您应该意识到,这些都不被认为更有效。

关于javascript - for 循环,迭代之间有 sleep ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47623926/

相关文章:

amazon-web-services - 如何在 Typescript 中优雅地导入 AWS - Lambda?

javascript - Spread Operator 获取数组内对象的单个属性 - JS/TS

Javascript 某些方法嵌套在 For 中

javascript - 查找 d3 中多个数据维度的范围

javascript - highcharts 的水平滚动条,不是 Highstock

javascript - Intern JS - 如何在链式命令方法中使用 Promise.all()?

javascript - Angular FormArray 内容顺序

javascript - 为什么我的方法没有将结果推送到我的阵列?

javascript - $.each jquery 循环在 getJSON 请求后为每个元素打印一个 "undefined",网格数据完美打印

visual-studio - 在使用 Visual Studio 创建的项目之外进行 TypeScript 编译