2010-11-03 38 views
0

我有一個點擊功能:幫助使用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

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)來調用異步行爲成功的功能。

0

通常情況下,JavaScript是單線程編程。但是你可以使用setTimeOut來自動調用定義的函數來模擬線程。對於你的源代碼,如果你不在任何方法中使用任何setTimeOut語句,它應該同步工作。