在整个动画发生后调用javascript函数

时间:2018-03-14 22:03:52

标签: javascript settimeout

我在Javascript中遇到函数回调和超时问题。

我有一些DIV,那些必须"脉冲"相继。 它们的值在一个数组中。 每次DIV脉冲时,该数组都会递增。

红色脉冲所以gameArr = [" red"]等等...

var k = 0;
    setTimeout(function(){
      for(let value of gameArr){
          toPulse(value)
        k++;
            console.log(gameArr);
      if(k == gameArr.length){
        playerTurn()
      }
      }
      },2000);

每次我使用这个时,所有的DIV都会一起脉冲而不是一个接一个。

1 个答案:

答案 0 :(得分:0)

所以在这里,您的for函数内部有setTimeout()循环 。 你可以做的是有一个迭代器变量,并在你的setTimeout()循环中放置一个for

看到这样的话:

let k = 0;
const interval = 2000;

for (let value of gameArr) {

    setTimeout(() => {
        toPulse(value)
    }, k * interval);

    k++;
    console.log(gameArr);
    if (k == gameArr.length) {
        playerTurn()
    }

}

不要忘记Javascript是 async ,这意味着setTimeout函数将完全在 sync 代码的其余部分之外执行。使用上面的代码,您可以创建与数组中的元素一样多的超时,每个元素的延迟与它们在数组中的位置成比例。