Javascript 方法未按正确顺序调用/异步方法

Javascript 方法未按正确顺序调用/异步方法,javascript,jquery,ajax,datatables,jquery-events,Javascript,Jquery,Ajax,Datatables,Jquery Events,当我尝试按此顺序加载这些函数时,出现了一个问题: 顺便说一下,我正在使用Datatables和jQuery,我相信你们中的许多人可能已经知道了 currPage = LookupPts.oTable.fnPagingInfo(); LookupPts.oTable.fnReloadAjax(); LookupPts.oTable.fnPageChange(currPage.iPage); 当我尝试在fnReloadAjax()之后立即运行fnPageChange()时失败 我知道这是一个时间问

当我尝试按此顺序加载这些函数时,出现了一个问题: 顺便说一下,我正在使用Datatables和jQuery,我相信你们中的许多人可能已经知道了

currPage = LookupPts.oTable.fnPagingInfo();
LookupPts.oTable.fnReloadAjax();
LookupPts.oTable.fnPageChange(currPage.iPage);
当我尝试在
fnReloadAjax()之后立即运行
fnPageChange()
时失败 我知道这是一个时间问题,因为异步
fnReloadAjax
, 我的问题是,当
fnReloadAjax
完成时,如何调用
fnPageChange

查看
fnReloadAjax()
具有以下特征:

fnReloadAjax=函数(oSettings、sNewSource、fnCallback、bStandingRedraw) {}

因此,您可以传递回调函数作为AJAX调用完成时要执行的第三个参数。试试这个:

currPage = LookupPts.oTable.fnPagingInfo();
LookupPts.oTable.fnReloadAjax(null, null, function() { 
    LookupPts.oTable.fnPageChange(currPage.iPage);
});
查看
fnReloadAjax()
具有以下特征:

fnReloadAjax=函数(oSettings、sNewSource、fnCallback、bStandingRedraw) {}

因此,您可以传递回调函数作为AJAX调用完成时要执行的第三个参数。试试这个:

currPage = LookupPts.oTable.fnPagingInfo();
LookupPts.oTable.fnReloadAjax(null, null, function() { 
    LookupPts.oTable.fnPageChange(currPage.iPage);
});
试试这个:

currPage = LookupPts.oTable.fnPagingInfo();
LookupPts.oTable.fnReloadAjax(null, null, function() { 
    LookupPts.oTable.fnPageChange(currPage.iPage);
});
currPage = LookupPts.oTable.fnPagingInfo();
LookupPts.oTable.fnReloadAjax(null, null, function() {
    LookupPts.oTable.fnPageChange(currPage.iPage);
}
试试这个:

currPage = LookupPts.oTable.fnPagingInfo();
LookupPts.oTable.fnReloadAjax(null, null, function() { 
    LookupPts.oTable.fnPageChange(currPage.iPage);
});
currPage = LookupPts.oTable.fnPagingInfo();
LookupPts.oTable.fnReloadAjax(null, null, function() {
    LookupPts.oTable.fnPageChange(currPage.iPage);
}

您需要实现一个回调,因为Javascript是一种非阻塞语言,不能一步一步地执行命令。因此,您需要在方法完成后运行回调

我只是查看了重载Ajax方法的定义(我从未使用过这个)。如果我得到的是正确的函数(oSettings、sNewSource、fnCallback、bstandinredraw)),那么下面的代码应该可以工作:

currPage = LookupPts.oTable.fnPagingInfo();
LookupPts.oTable.fnReloadAjax(null, null, function(){
   LookupPts.oTable.fnPageChange(currPage.iPage);
});

您需要实现一个回调,因为Javascript是一种非阻塞语言,不能一步一步地执行命令。因此,您需要在方法完成后运行回调

我只是查看了重载Ajax方法的定义(我从未使用过这个)。如果我得到的是正确的函数(oSettings、sNewSource、fnCallback、bstandinredraw)),那么下面的代码应该可以工作:

currPage = LookupPts.oTable.fnPagingInfo();
LookupPts.oTable.fnReloadAjax(null, null, function(){
   LookupPts.oTable.fnPageChange(currPage.iPage);
});

好吧,我把它修好了

在我发布我的问题之前,我尝试了你们所有人描述的相同方法,但我仍然遇到同样的问题。由于某种原因,它不起作用

我要怎么做才能修好它

调试插件后,我发现参数的顺序不正确。pluggin的参数有:oSettings、sNewSource、bStandingRedraw、fnCallback

我注意到当调用该方法时,我的参数顺序不正确。我的顺序是oSettings=object,nNewSource=null,fnCallback=null,bStandingRedraw=function

诀窍是按正确的顺序放置参数,如下所示,回调作为参数列表中的第二个参数:

                        currPage = LookupPts.oTable.fnPagingInfo();
                        LookupPts.oTable.fnReloadAjax(null, function(){
                           LookupPts.oTable.fnPageChange(currPage.iPage);
                           console.log("finished loading the page details");
                        }, null);
我对第一个参数的设置感到困惑。顺便问一下,第一个参数是如何与对象一起加载的?
谢谢大家

好吧,我把它修好了

在我发布我的问题之前,我尝试了你们所有人描述的相同方法,但我仍然遇到同样的问题。由于某种原因,它不起作用

我要怎么做才能修好它

调试插件后,我发现参数的顺序不正确。pluggin的参数有:oSettings、sNewSource、bStandingRedraw、fnCallback

我注意到当调用该方法时,我的参数顺序不正确。我的顺序是oSettings=object,nNewSource=null,fnCallback=null,bStandingRedraw=function

诀窍是按正确的顺序放置参数,如下所示,回调作为参数列表中的第二个参数:

                        currPage = LookupPts.oTable.fnPagingInfo();
                        LookupPts.oTable.fnReloadAjax(null, function(){
                           LookupPts.oTable.fnPageChange(currPage.iPage);
                           console.log("finished loading the page details");
                        }, null);
我对第一个参数的设置感到困惑。顺便问一下,第一个参数是如何与对象一起加载的? 谢谢大家