function showColors() {
  $.each(colorList, function(value) {
    setTimeout(function(){
      revealColor(colorList[value]);
    }, 1000);
  });
}


我基本上是想在这里进行设置,以便revealColor函数每1000毫秒运行一次,直到到达整个colorList数组的末尾为止。不幸的是,它会立即将所有setTimeout事件排队,然后在1000毫秒后对数组中的每个值运行一次showalColor函数。

我敢肯定,还有一种更简单的方法,我只是没有看到。任何帮助将是巨大的!

最佳答案

使用纯JS:



var colorList = ["red", "green", "blue"];

var colorIndex = 0;

var handler = setInterval(function() {
    revealColor(colorList[colorIndex]);
    colorIndex++;
    if (colorIndex >= colorList.length) {
        clearInterval(handler);
    }
}, 1000);

function revealColor(color) {
    document.body.style.background = color;
}





使用jQuery:



var colorList = ["red", "green", "blue"];

var delay = 1000;

$.each(colorList, function (value) {
    setTimeout(function () {
        revealColor(colorList[value]);
    }, delay);
    delay += 1000;
});

function revealColor(color) {
    document.body.style.background = color;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

09-17 21:27