2013-04-20 149 views
0

我一個JavaScript方法定義如下:執行的方法,每當一些方法已完成完全執行

updtCrtEdtPage = function() {PrimeFaces.ab({source:'j_id_ev',formId:'j_id_es',process:'typeNewLOB_in lobIdForEdit j_id_ev',update:'createLOBFullPagePanel',oncomplete:function(xhr,status,args){prepareForCrtEdtFullPage();},params:arguments[0]});} 

執行某些方法(afterComplete())每當此方法執行結束。 (此方法實際上啓動一個ajax請求&在DOM上追加收到的HTML數據)。所以我希望我的afterComplete()方法在接收到Ajax響應時執行。

我不能直接做,如:

updtCrtEdtPage(); 
afterComplete(); 

,因爲這之後不久AJAX請求將調用afterComplete()開始&沒有完全執行完畢呢。

有沒有我能做到的JS/jQuery方式?

+0

可以調用的onComplete – PSR 2013-04-20 10:21:36

+0

@ hr_117:因爲我想執行後,指定該方法時調用該方法與不同時限定。因爲每次調用此方法都會有所不同。 – 2013-04-20 10:34:42

回答

1

您可以通過afterComplete作爲參數,以便您的函數可以在ajax調用完成時調用它。事情是這樣的......

updtCrtEdtPage = function(callback) { 
    PrimeFaces.ab({ 
     source:'j_id_ev', 
     formId:'j_id_es', 
     process:'typeNewLOB_in lobIdForEdit j_id_ev', 
     update:'createLOBFullPagePanel', 
     oncomplete:function(xhr,status,args){ 
      prepareForCrtEdtFullPage(); 
      callback(); 
     }, 
     params:arguments[0] 
    }); 
} 

updtCrtEdtPage(afterComplete); 

既然你說你不能修改updtCrtEdtPage,但可以修改prepareForCrtEdtFullPage我建議使用一個全局變量來確定要調用的回調函數,當該方法完成.. 。

updtCrtEdtPageCallback = afterComplete; 

,然後在prepareForCrtEdtFullPage剛纔添加的最後一行...

updtCrtEdtPageCallback(); 

第一種方法是整潔,但塞康d將滿足您的特定情況。

+0

我知道這一點,但實際上我想在定義後調用方法時不指定執行後的方法。因爲每次調用此方法都會有所不同。 – 2013-04-20 10:25:13

+0

這正是這樣做的。你可以用上面的代碼 – Archer 2013-04-20 10:25:53

+0

調用'updtCrtEdtPage(anyCallbackMethod)'謝謝,但我忘了告訴你一件事,我沒有*完全控制'updtCrtEdtPage'方法的定義,因爲這是框架生成的。所以我不能在方法定義中添加一個參數,但是我可以做的是在定義的oncomplete節中指定方法,但是如何使這個定製方法成爲可能!? – 2013-04-20 10:29:46

0

您的updtCrtEdtPage = function()有一個oncomplete回調,當接收到ajax響應時調用,在該回調中添加afterComplete函數,並在ajax請求完成後執行。

oncomplete:function(xhr,status,args){ 
    prepareForCrtEdtFullPage(); 
    afterComplete() 
} 
相關問題