【问题标题】:How can I get a callback to execute properly when there is a "for loop" in a function?当函数中有“for循环”时,如何让回调正确执行?
【发布时间】: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循环中出来了,而不是仅仅退出函数。
  • 感谢你们俩。条件句中的代码与 Adob​​e After Effects 交互并在应用程序内设置属性。所以也许这就是迫使它回归的原因。将测试打破的想法。谢谢!
  • 只要for循环是同步的,什么都不用担心。

标签: javascript callback asynccallback


【解决方案1】:

感谢上面的 cmets,我意识到由于我正在与 After Effects 交互,因此程序会强制函数返回某些内容,并且不允许触发回调。我只是在“for”声明之后和所有条件之前添加了这个:

if(i==myArray.length){break;}

这就解决了。谢谢大家!

R

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-01
    • 1970-01-01
    • 2022-11-23
    • 2015-03-31
    • 1970-01-01
    • 2011-10-24
    • 1970-01-01
    相关资源
    最近更新 更多