Могу ли я обновить данные с результатами JSON, пока пользователь все еще взаимодействует со страницей? - PullRequest
0 голосов
/ 23 апреля 2019

Я пытаюсь создать сайт для поиска торрентов с помощью моего 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, когда поиск будет завершен. Я хочу просмотреть результаты, обновляя таблицу новыми результатами каждые две секунды. Если я перебираю это в цикле и жду, пока законченное значение не изменится, обновляя результаты по мере продвижения, в настоящее время страница останавливается.

Заранее спасибо.

...