当用户仍与页面交互时,我可以用JSON结果更新数据表吗?

时间:2019-04-23 10:42:54

标签: javascript json parallel-processing datatables synology

我正在尝试为我创建一个网站,以使用Synology NAS API搜索种子。 API请求将构建结果,并提供可检索的部分结果。我想系统地检索这些结果并建立表,同时让自己能够取消任务或浏览已检索的结果。

我看过JS库Parallel.js,但没有运气。我还在网上搜索了动态表更新并在JS中列出实时结果,但没有发现任何用处。

<table id="example" class="table table-striped table-bordered" style="width:100%">
    <thead>
          <tr>
        <th>Title</th>
        <th>Date</th>
        <th>Peers</th>
        <th>Seeds</th>
        <th>Size</th>
        <th>Link</th>
      </tr>
        </thead>
    <tbody id="maintable"></tbody>
        <tfoot>
          <tr>
            <th>Title</th>
            <th>Date</th>
            <th>Peers</th>
            <th>Seeds</th>
            <th>Size</th>
            <th>Link</th>
          </tr>
        </tfoot>
      </tbody>

  </table>
function sleep(miliseconds) {
   var currentTime = new Date().getTime();

   while (currentTime + miliseconds >= new Date().getTime()) {
   }
}



$(document).ready(function() {
    $('#example').DataTable();

} );

function GetSearchResults(taskID){
    var url = "http://MY_IP:MY_PORT/webapi/DownloadStation/btsearch.cgi?api=SYNO.DownloadStation.BTSearch&version=1&taskid=" +  taskID + "&method=list&offset=0";

        //start loop
    $.getJSON( url, function( data ) {

        for(var i = recorded; i < data.data.items.length; i ++){
            $("#maintable").append(
                "<tr><td>" + data.data.items[i].title  + 
                "</td><td>" + data.data.items[i].date  +
                "</td><td>" + data.data.items[i].peers  +
                "</td><td>" + data.data.items[i].seeds  + 
                "</td><td>" + data.data.items[i].size  + 
                '</td><td><a href="' + data.data.items[i].download_uri  + 
                '">Link</a></td></tr>'
            );

        }

        sleep(2000);

        $("#tablebody").draw();

    // end loop
        });
}

这似乎很好,但是当搜索完成时,请求将返回结果中的“完成”值设置为true。我想遍历结果,每隔2秒钟左右用新结果更新表。如果我循环浏览并等待完成的值更改,并在进行过程中更新结果,则当前冻结页面。

谢谢。

0 个答案:

没有答案