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

Method not called in correct order / asyncronous method

本文关键字:顺序 异步方法 调用 方法      更新时间:2023-09-26

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

currPage = LookupPts.oTable.fnPagingInfo();
LookupPts.oTable.fnReloadAjax();
LookupPts.oTable.fnPageChange(currPage.iPage);

当我尝试在fnReloadAjax()后立即运行fnPageChange()时失败我知道这是由于异步fnReloadAjax而导致的计时问题,我的问题是,当fnReloadAjax完成时,我怎样才能调用fnPageChange

好的,我把它修好了。

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

我必须做些什么来修复它?

调试插件后我发现参数的顺序不正确。插件的参数是: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);

我对第一个参数oSettings感到困惑。顺便问一下,第一个参数是如何加载对象的?谢谢大家!

查看插件文档,fnReloadAjax()具有以下签名:

fnReloadAjax = function ( 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);
}

您需要实现回调,因为 Javascript 是一种非阻塞语言,并且不会逐步使用命令。因此,您需要在方法完成后运行的回调。

只是看了ReloadAjax方法的定义(我从来没有使用过这个)。如果我得到正确的是:函数(oSettings,sNewSource,fnCallback,bStandingRedraw))以下代码应该可以工作:

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