setTimeout Первая задержка не вступает в силу - PullRequest
0 голосов
/ 09 июня 2011

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 Ответ

1 голос
/ 09 июня 2011

он выполнит приведенные ниже коды, не дожидаясь задержки, чтобы запустить первый аргумент 'setTimeout'

Похоже, вы начинаете первый поворот напрямую.Вместо:

rotateImages(0);

Попробуйте запустить первый поворот с задержкой, например:

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