Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 每当某个方法完全执行完毕,就执行一个方法_Javascript_Jquery - Fatal编程技术网

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

我有一个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请求&将接收到的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
不用担心-很乐意帮助:)