我有这个代码:
$(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/