javascript 超时退出 for 循环

标签 javascript for-loop settimeout

我有这个代码:

$(function(){
    var steps   = ["download","unpack","install","installed"];
    for(var i = 1; i <= steps.length; i++){
        setTimeout(function(){
            if(updater(steps[i]) === false) break; // if update fails
            else{
                var progress    = (i / steps.length) * 100;
                $("div#update div.progress div.progress-bar").animate({
                    width   : progress+"%"
                }).attr("aria-valuenow", progress);
            }
        , 5000)
    }
    if(steps.length === i){ // update is fully installed
        alertBox("success", "Congratulations, a new version of the SocialTab 3 has been installed.", 31556952000);
    }
    else{ // update failed
        alertBox("error", "<p>Update failed!</p><p>"+updateError+"</p>", 31556952000);
    }
});

当我这样做时,我不能使用 break 因为它应该在 for 循环中使用,而不是因为我把它放在 setTimeout 函数中。 我想知道如何跳出 for 循环并仍然延迟 setTimeout 函数中的代码。

最佳答案

试试这个:

$(function(){
    function StepUpdate(step)
    {
        var steps   = ["download","unpack","install","installed"];

        if (steps[step] != undefined)
        {
            setTimeout(function(){
                if(updater(steps[step]) === true)
                {
                    var progress    = (step / steps.length) * 100;
                    $("div#update div.progress div.progress-bar").animate({
                        width   : progress+"%"
                    }).attr("aria-valuenow", progress);
                    StepUpdate(step + 1);
                }
                else 
                {
                    // update failed
                    alertBox("error", "<p>Update failed!</p><p>"+updateError+"</p>", 31556952000);
                }
            }, 5000);
        }
        else 
        {
            alertBox("success", "Congratulations, a new version of the SocialTab 3 has been installed.", 31556952000);
        }
     }

     StepUpdate(0);
});

没有测试过。

关于javascript 超时退出 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21231325/

相关文章:

javascript - 处理嵌套文件包含在 php 中并将值返回给 javascript 函数

javascript - 使用服务器js中的key从mongo获取数据

javascript - 如何从其他 html 页面的 html 表单 POST 接收数据?

python - 某些列的唯一值,DF pandas

javascript - 在 Dojo 类中递归调用 setTimeout 时是否存在内存泄漏?

javascript - Amcharts 迷你图占父 div 的全宽(100%)

for-loop - F# 嵌套 for 循环中的编译错误,语法冗长

python - 是否可以在 python 中使用 in-line for 中断

javascript - 将小数延迟传递给 setInterval 或 setTimeout 是否安全?

javascript - 如果未能及时完成,NodeJS Timeout a Promise