【问题标题】:Delay between each iteration of foreach loop?foreach循环的每次迭代之间的延迟?
【发布时间】:2016-04-19 01:19:06
【问题描述】:

所以我正在制作一个西蒙说游戏。此功能显示当前序列。它现在的问题是它并没有真正按照一个好的顺序进行,它有点像一次做所有事情。假设颜色是“蓝色”、“红色”和“黄色”,它们会同时熄灭,而不是依次熄灭。我该如何解决这个问题?

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

【问题讨论】:

  • 您可以使用setTimeout()来错开序列中每种颜色的显示。

标签: javascript jquery


【解决方案1】:

无 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 * 索引来改变延迟。

【讨论】:

【解决方案2】:

我使用了jQuery 延迟函数

这是一个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();

});

这是DEMO

【讨论】:

  • 这确实很好,但是一旦添加了重复的颜色,它就会被大量延迟。
  • @Scriptoaniac,是的,因为 i = 从 0 开始到数组长度的结尾,延迟乘以 1000 毫秒(1 秒),为了减少延迟,您可以调整乘数值跨度>
猜你喜欢
  • 1970-01-01
  • 2018-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-11
  • 1970-01-01
  • 2015-01-14
  • 2017-04-03
相关资源
最近更新 更多