我有一个点击功能:
jQuery("#element").click(function(e){
var op = jQuery("#box").GetOp();
op.flag1 = false;
op.flag2 = true;
executeFunction();
jQuery("#box").reload();
});我希望函数executeFunction();和jQuery("#box").reload();仅在前两行执行后按串行顺序执行。
编辑:函数需要同步执行。
其他线程建议使用回调,但我不确定如何在我的情况下使用它。
有什么建议吗?
发布于 2010-11-03 15:24:15
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)以在异步行为成功时调用该函数。
发布于 2010-11-03 15:21:06
通常,JavaScript是单线程编程。但是您可以通过使用setTimeOut自动调用定义的函数来模拟线程。对于您的源代码,如果您不在任何方法中使用任何setTimeOut语句,那么它应该同步工作。
https://stackoverflow.com/questions/4084801
复制相似问题