如何等待DataTable()。ajax.url()。load()?

时间:2019-07-03 10:18:24

标签: jquery ajax datatables async-await

我的jQuery代码中,我需要在DataTable中加载一些数据,然后,仅在正确填充此DataTable之后再进行操作。

我的代码当前看起来像:

function f () {
    /* ... */
    $('#my_datatable').DataTable().ajax.url(my_url).load();
    /* Do some stuff */
}

f();
/* Do some more stuff */

我希望/* Do some stuff *//* Do some more stuff */仅在我的DataTable很好地显示后才能执行。

我对javascript的异步性很陌生,因此我可能会误解我的需求,但是我想我想做些类似的事情:

async function f () {
    /* ... */
    await $('#my_datatable').DataTable().ajax.url(my_url).load();
    /* Do some stuff */
}

f().then (function () {
    /* Do some more stuff */
});

这是我通常想等待$.get()完成的工作。

是否可以用DataTable的.ajax.url().load()做这种事情?

2 个答案:

答案 0 :(得分:0)

如果我要在表完全初始化,加载和绘制数据后运行一些代码,通常会使用内置的DataTables callback initComplete

$('#example').dataTable( {
  "initComplete": function(settings, json) {
    alert( 'DataTables has finished its initialisation.' );
  }
} );

答案 1 :(得分:0)

您需要将回调传递给load方法 https://datatables.net/reference/api/ajax.url().load()

示例:

function f () {
        $('#my_datatable').DataTable().ajax.url(my_url).load(callback);
}
function callback(){
    alert('I am completely loaded');
}

f();

您还可以将函数嵌套在回调中。