我正在尝试为我创建一个网站,以使用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秒钟左右用新结果更新表。如果我循环浏览并等待完成的值更改,并在进行过程中更新结果,则当前冻结页面。
谢谢。