Javascript foreach循环每次迭代之间的延迟?

Javascript foreach循环每次迭代之间的延迟?,javascript,jquery,Javascript,Jquery,所以我在做一个西蒙说的游戏。此功能显示当前序列。现在的问题是,它并没有按照一个好的顺序进行,它可以同时完成所有的事情。假设颜色是“蓝色”、“红色”和“黄色”,它们将同时消失,而不是按顺序消失。我如何解决这个问题 var displaySequence = function(){ compSequence.forEach(function(color){ $("#" + color).fadeTo(300, 0.5).fadeTo(300, 1.0); }) }

所以我在做一个西蒙说的游戏。此功能显示当前序列。现在的问题是,它并没有按照一个好的顺序进行,它可以同时完成所有的事情。假设颜色是“蓝色”、“红色”和“黄色”,它们将同时消失,而不是按顺序消失。我如何解决这个问题

var displaySequence = function(){
    compSequence.forEach(function(color){
        $("#" + color).fadeTo(300, 0.5).fadeTo(300, 1.0);
    })
}

我使用jQuerydelay函数

下面是javascript的一个示例

$(document).ready(function(){

  var compSequence = new Array("red", "blue", "yellow");

  var displaySequence = function() {

      $.each(compSequence, function (i, color) {
        // add delay
        $("#" + color).delay(i * 1000).fadeTo(300, 0).fadeTo(300, 1.0);
      });      
  }

  displaySequence();

});

这是一个非jQuery解决方案。您需要使用数组索引来提供每次调用之间等待的假象,但是每个函数都已经运行。将发生的情况是:在1秒内显示颜色1,在2秒内显示颜色2

var displaySequence = function(){
    compSequence.forEach(function(color, index){
        setTimeout(function(){
            $("#" + color).fadeTo(300, 0.5).fadeTo(300, 1.0);
        },
        1000 * index);
    })
}

调整1000*索引以更改延迟。

您可以使用来错开顺序中每种颜色的显示。这非常有效,但一旦添加了重复的颜色,它就会被大量延迟。@Scriptomaniac,是的,因为i=从0开始到数组长度的末尾,延迟会乘以1000毫秒(1秒),为了减少延迟,您可以调整乘数值,因此您可以说这是非Jquery解决方案??不再是Jquery解决方案:)这不应该工作smh: