eir*_*krl 10 javascript for-loop callback break
我有以下代码:
function test(obj) {
if(//some conditon) {
obj.onload();
}else{
obj.onerror();
}
}
for(var i=0;i<4;i++){
test({
onload:function(e){
//some code to run
},
onerror:function(e){
break;
}
});
}
Run Code Online (Sandbox Code Playgroud)
要点是test()函数是一个发出XHR请求的函数(它实际上是Appcelerator Titanium平台的API,所以我无法控制它)而且我正在循环调用测试函数.我需要打破onerror函数的循环,但是我得到一个错误,说中断不在循环或switch语句中.我怎么能改写这个?
pen*_*tur 12
如果您的代码示例确实代表了一些实际代码(即所有处理都在相同的事件循环中完成),您可以执行以下操作:
function test(obj) {
if (some_condition) {
return obj.onload();
} else {
return obj.onerror();
}
}
var result;
for(var i=0; i<4; i++){
result = test({
onload:function(e){
//some code to run
return true;
},
onerror:function(e){
return false;
}
});
if (!result) {
break;
}
}
Run Code Online (Sandbox Code Playgroud)
否则,如果异步完成,则必须test按顺序调用,而不是并行调用.例如,
function test(obj) {
doSomeAjaxRequest(arguments, function (err, result) {
if (some_condition) {
obj.onload();
} else {
obj.onerror();
}
});
}
var f = function (i) {
if (i >= 4) return;
test({
onload:function(e){
//some code to run
f(i+1);
},
onerror:function(e){
break;
}
});
}
f(0);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12281 次 |
| 最近记录: |