在循环中使用setTimeout混淆程序流

时间:2017-03-02 18:35:33

标签: javascript foreach settimeout

http://codepen.io/scabbyjoe/pen/evJWwX?editors=1011

    order.forEach(function(element) {
      $(element).addClass("pressed");
      console.log("Added to " + element);
      timeoutID = window.setTimeout(function() {
        $(element).removeClass("pressed");
        console.log("Removed from " + element);
      }, 2000);
    });

我在forEach循环中使用setTimeout对我的程序流感到难过。

我期待程序,在循环的单次迭代中添加类,等待,然后删除该类,然后进入下一次迭代。

然而,据我所知,程序是添加类,移动到下一个迭代,添加该类等,然后一旦它完全迭代,移动到设置为延迟的删除类函数。

1 个答案:

答案 0 :(得分:0)

基本上你的代码是添加类"按下"每个块同时,然后删除所有类"按下"在2000毫秒同时

如果您希望代码运行以便从一个类移动到另一个类,则必须使用jQuery deferred objects