如何暂停/继续/延迟for循环?

时间:2019-09-06 03:42:12

标签: javascript

您如何在JavaScript中暂停/恢复/延迟for循环?

假设我有这样的东西

svg.selectAll('rect')
    .style("fill",function(d){ 
        return d.salary  >= 4000 ? d3.color("green") : 'yellow';
    })
    .style('fill-opacity',0.5)
    .style("stroke", 'black') 
    .style("stroke-width",0.2);

我们可以使用类似的方法来延迟整个功能,但不适用于for循环

for (let i = 0; i < 10; i++) {
   console.log('value of i is',i)
}

2 个答案:

答案 0 :(得分:0)

您可以在循环内使用async / await语法。

for (let i = 0; i < 10; i++) {
   console.log('value of i is',i)
   await delayAFn(1000);
}

答案 1 :(得分:0)

过去我们要做的是建立队列类型,如果超时,您可以使用超时来调用下一个迭代。

function nextStep(i) {
  console.log(`value of i is ${i}`)
  if (i < 9) {
    window.setTimeout(nextStep, 1000, ++i)
  } else {
    console.log('done')
  }
}
nextStep(0)