javascript中断for循环并超时
我有以下代码:javascript中断for循环并超时,javascript,for-loop,settimeout,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{
$(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);
}
});
$(函数(){
var步骤=[“下载”、“解包”、“安装”、“安装”];
对于(var i=1;i尝试以下方法:
$(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);
});
$(函数(){
功能步骤更新(步骤)
{
var步骤=[“下载”、“解包”、“安装”、“安装”];
如果(步骤[步骤]!=未定义)
{
setTimeout(函数(){
if(更新程序(步骤[步骤])==true)
{
变量进度=(步长/步长长度)*100;
$(“div#update div.progress div.progress-bar”)。动画({
宽度:进度+“%”
}).attr(“aria valuenow”,进度);
步骤更新(步骤+1);
}
其他的
{
//更新失败
alertBox(“错误”,“更新失败!”+updateError+“”,31556952000);
}
}, 5000);
}
其他的
{
alertBox(“成功”,“祝贺您,安装了SocialTab 3的新版本。”,31556952000);
}
}
步骤更新(0);
});
没有测试它。您可以使用递归函数执行此操作,如下所示:
var steps = ["download","unpack","install","installed"];
function doUpdate( index ) {
if( updater(steps[index]) === false) {
alertBox( "error", "<p>Update failed!</p><p>"+updateError+"</p>", 31556952000 ); // if update fails
}
else{
var progress = (index / steps.length) * 100;
$( "div#update div.progress div.progress-bar" ).animate( {
width : progress + "%"
} ).attr("aria-valuenow", progress);
}
if( steps.length === i ) {
// update is fully installed
alertBox("success", "Congratulations, a new version of the SocialTab 3 has been installed.", 31556952000);
}
else {
doUpdate( index + 1 )
}
}
doUpdate( 0 );
var步骤=[“下载”、“解包”、“安装”、“安装”];
函数更新(索引){
if(更新程序(步骤[索引])==false){
alertBox(“错误”,“更新失败!”“+updateError+””,31556952000);//如果更新失败
}
否则{
风险值进度=(指数/步长长度)*100;
$(“div#update div.progress div.progress-bar”)。动画({
宽度:进度+“%”
}).attr(“aria valuenow”,进度);
}
如果(steps.length==i){
//更新已完全安装
alertBox(“成功”,“祝贺您,安装了SocialTab 3的新版本。”,31556952000);
}
否则{
双更新(索引+1)
}
}
双更新(0);
我不能投票否决你和尼克的关系……所以我就这么做了:)