setTimeout第一次延迟不生效

发布于 2024-11-14 08:57:33 字数 906 浏览 1 评论 0原文

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);
})();

setTimeout doesn't work as expected because it will execute the codes below subsequently without waiting for the delay to run the first argument of '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);
})();

Is there a way to write it so that it doesnt fade out right away for the first image?

a simplified version would be :

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

    function rotateImages(start) {
             //do something here

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

冷了相思 2024-11-21 08:57:33

它将执行下面的代码
随后无需等待
延迟运行第一个参数
'设置超时'

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

rotateImages(0);

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

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

it will execute the codes below
subsequently without waiting for the
delay to run the first argument of
'setTimeout'

It looks like you're starting the first rotate directly. Instead of:

rotateImages(0);

Try to start the first rotate with a delay, like:

window.setTimeout(function() {
        rotateImages(0);
    }, settings.imageArray[0].delay);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文