JavaScript中

时间:2016-12-01 19:11:28

标签: javascript

我试图在每次迭代中实现一个带延迟的嵌套for循环。

到目前为止,我已经想出了类似的东西

var maxLoops = 10 ;
var counter = 0;
var counter2 = counter;

var maxLoops = 10 ;
var counter = 0;
var counter2 = counter;

(function nNext() {

  if (counter == maxLoops) return
  counter2 = counter - 1;

  setTimeout(() => (function next() {

     if (counter2 >= maxLoops) return;

     setTimeout(() => {
          console.log( "Nester counter :" + counter2);
          counter2++
          next()
     }, 100)

  })(), 1)
  counter++;
  nNext();

})();

然而它并没有正常运作。我试图做一个冒泡排序的直观表示,我需要这个延迟,以便看到每个步骤,如果阵列立即排序没有这种延迟是不可能的。实际上可以实现这样的事情吗?或者也许有更好的方法来做到这一点?

1 个答案:

答案 0 :(得分:0)

你得到的结构似乎有点复杂,这应该可以实现你想要的东西:

var maxLoops = 10,
    counter = 0,
    counter2 = 0;

function outerNext() {
  if (counter == maxLoops) return;
  counter2 = counter - 1
  innerNext()
}

function innerNext() {
  if (counter2 >= maxLoops) {
    outerNext()
  }
  else {
    counter2++;
    console.log("Nester counter :" + counter2);
    setTimeout(innerNext, 500)
  }
}
outerNext()