setTimeout First Delay不生效

时间:2011-06-09 08:05:01

标签: javascript jquery delay settimeout

setTimeout不能按预期工作,因为它会在不等待延迟运行'setTimeout'的第一个参数的情况下执行下面的代码

(function() {
    var a = ['#bird','#flower','#cat'];
    var totalno = settings.imageArray.length;
    function rotateImages(start) {
        var nextImage = start + 1;
        if(nextImage % totalno == 0){
        nextImage=0;
        }

        //do animate here
        $(settings.imageArray).fadeOut();

        window.setTimeout(function() {
            rotateImages(++start % totalno);
        }, settings.imageArray[start].delay);
    }
    rotateImages(0);
})();

有没有办法写它,以便它不会立即淡出第一张图像?

简化版将是:

(function() {
    var a = ['#bird','#flower','#cat'];

    function rotateImages(start) {
             //do something here

        window.setTimeout(function() {
            rotateImages(++start % a.length;);
        }, 1000);
    }
    rotateImages(0);
})();

1 个答案:

答案 0 :(得分:1)

  

它将执行以下代码   随后无需等待   延迟运行第一个参数   '的setTimeout'

看起来你正在直接开始第一次旋转。而不是:

rotateImages(0);

尝试以延迟开始第一次旋转,例如:

window.setTimeout(function() {
        rotateImages(0);
    }, settings.imageArray[0].delay);