Javascript 每当某个方法完全执行完毕,就执行一个方法
我有一个javascript方法,定义如下:Javascript 每当某个方法完全执行完毕,就执行一个方法,javascript,jquery,Javascript,Jquery,我有一个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
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请求&将接收到的HTML数据附加到DOM上)。所以我希望在收到ajax响应时执行afterComplete()方法
我不能直接这样做:
updtCrtEdtPage();
afterComplete();
因为这将在ajax请求启动后不久调用afterComplete()&尚未完全完成执行
有什么JS/jQuery方法可以做到这一点吗?您可以将
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
,但是你可以修改prepareforctfullpage
,我建议使用一个全局变量来确定在方法完成时调用哪个回调函数
updtCrtEdtPageCallback = afterComplete;
然后在prepareforctfullpage
中添加最后一行
updtCrtEdtPageCallback();
第一种方法比较整洁,但第二种方法可以满足您的特定情况。您的updtCrtEdtPage=function()有一个oncomplete回调,在收到ajax响应时调用,在该回调中添加afterComplete函数,它将在ajax请求完成后执行
oncomplete:function(xhr,status,args){
prepareForCrtEdtFullPage();
afterComplete()
}
你可以打电话来oncomplete@hr_117:因为我想在调用方法时指定执行后的方法&而不是在定义时。因为每次调用这个方法都会有所不同。我知道这一点,但实际上我想在调用这个方法时为after Execution指定方法&而不是在定义时。因为每次调用这个方法都会有所不同。这正是它的作用。您可以使用上述代码调用
updtCrtEdtPage(anyCallbackMethod)
,谢谢,但我忘了告诉您一件事,我不能完全控制updtCrtEdtPage
方法的定义,因为这是框架生成的。所以我不能给方法定义添加一个参数,但我能做的是在定义的oncomplete部分指定方法,但我如何使它成为一个自定义方法!?例如,您可以使用一个全局变量-updtCrtEdtPageCallback
,然后在preparefortedtfullpage()
的末尾调用它,然后您只需说updtCrtEdtPageCallback=afterComplete
不用担心-很乐意帮助:)