【发布时间】:2018-10-17 01:36:37
【问题描述】:
似乎因为我有一个“for 循环”和多个 if/else 场景,所以回调永远不会被触发。当我删除“for循环”时,它工作正常。我在这里做错了什么?如何强制回调等待所有 for 循环和条件完成?谢谢!
var myArray = ["one","two","three","four","five","six","seven","eight","nine","ten"];
function myFunction(arg1,arg2,arg3,arg4,arg5,callbackFunction){
if (arg1 == "arg1"){
for (var i=0; i<=myArray.length; i++){
if(arg2 == "arg2"){
if(arg3 == "arg3"){
if(arg4 == "arg4"){
//some code
}else{
if(arg5 == "arg5"){
//some code
}else{
//some code
}
//some code
}
}else{
//some code
}
}
else{
//some code
}
}
}else{
//some code
}
if (callbackFunction){
callbackFunction();
}
}
myFunction("arg1","arg2","arg3","arg4","arg5",function(){
alert("done");
});
【问题讨论】:
-
我已经检查了代码。无论有没有callbackFunction(),它都可以正常工作。需要更多数据来解决这个问题。但我认为你正在返回的 for 循环内的 if-else 块中的某个地方。而且for循环总是同步的
-
如果您在某些 if/else 场景中是
returning,您可以考虑使用break。这样代码就从for循环中出来了,而不是仅仅退出函数。 -
感谢你们俩。条件句中的代码与 Adobe After Effects 交互并在应用程序内设置属性。所以也许这就是迫使它回归的原因。将测试打破的想法。谢谢!
-
只要for循环是同步的,什么都不用担心。
标签: javascript callback asynccallback