某个方法完全执行完毕后执行方法

时间:2013-04-20 10:15:28

标签: 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:arguments[0]});}

每当此方法执行完时,我想执行某些方法( afterComplete())。 (此方法实际上启动ajax请求并将接收到的HTML数据附加到DOM上)。所以我希望只要收到ajax响应就会执行 afterComplete()方法。

我不能直接这样做:

updtCrtEdtPage();
afterComplete();

因为这会在ajax请求启动后立即调用afterComplete()&尚未完全执行。

我可以做任何JS / jQuery方法吗?

2 个答案:

答案 0 :(得分: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我建议使用全局变量来确定当方法完成时要调用哪个回调函数... < / p>

updtCrtEdtPageCallback = afterComplete;

然后在prepareForCrtEdtFullPage中添加最后一行......

updtCrtEdtPageCallback();

第一种方法比较整洁,但第二种方法足以满足您的特殊情况。

答案 1 :(得分:0)

你的updtCrtEdtPage = function()有一个oncomplete回调函数,当收到ajax响应时调用它,在该回调函数中添加你的afterComplete函数,它将在ajax请求完成后执行。

 oncomplete:function(xhr,status,args){
   prepareForCrtEdtFullPage();
   afterComplete()
 }