我有点击功能:
jQuery("#element").click(function(e){
var op = jQuery("#box").GetOp();
op.flag1 = false;
op.flag2 = true;
executeFunction();
jQuery("#box").reload();
});
我想要函数executeFunction();和jQuery(“#box”)。reload();只有在执行前两行后才能按顺序执行。
编辑:函数应该同步执行。
其他线程建议使用回调,但我不确定如何在我的情况下使用它。
有什么建议吗?
答案 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语句,它应该同步工作。