帮助jQuery函数过早执行

时间:2010-11-03 06:56:19

标签: javascript jquery

我有点击功能:

jQuery("#element").click(function(e){

        var op = jQuery("#box").GetOp();
  op.flag1 = false;
        op.flag2 = true;
  executeFunction();
  jQuery("#box").reload();

 });

我想要函数executeFunction();和jQuery(“#box”)。reload();只有在执行前两行后才能按顺序执行。

编辑:函数应该同步执行。

其他线程建议使用回调,但我不确定如何在我的情况下使用它。

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

Javascript本质上是同步的,所以,如果你的代码没有按顺序执行,那么executeFunction()可能会调用一些异步行为,比如AJAX请求或setTimeout/setInterval

在这种情况下,一个可行的解决方案是将函数传递给executeFunction()并在完成异步行为时调用它:

jQuery('#element').click(function(e){
    var op = jQuery('#box').GetOp();
    op.flag1 = false;
    op.flag2 = true;
    executeFunction(function(){
        jQuery('#box').reload();
    });
});

更改executeFunction(fn)以在异步行为成功时调用该函数。

答案 1 :(得分:0)

通常,JavaScript是单线程编程。但您可以使用setTimeOut自动调用已定义的函数来模拟线程。对于您的源代码,如果您在任何方法中都不使用任何setTimeOut语句,它应该同步工作。