2013-04-20 112 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() 
} 
相关问题