我在playframework中运行了Coffeescript代码,它基于几个AJAX查询构建了一个表。
$ ->
$.get "/queues", (queues) ->
$.each queues, (index, queue) ->
$.get "/queue/" + queue, (html) ->
$("#queues").append $("<tr>").html html
/queues
返回队列名称列表
/queue/name
返回描述队列name
的HTML
#queues
是一个表格,我在其中显示该说明。
这一切都运行正常,但由于查询是异步的,因此每次都会以不同的顺序执行追加调用,这意味着每次查询运行时都会对表内容进行随机重新排序。由于这是提供动态的当前状态,因此查询每三秒运行一次。
每次都以一致的顺序显示行的好方法是什么?我有index
,所以我可以尝试将数据添加到该行中,但如果第三个查询首先返回,则将其添加到第三行将无法正常工作。
我对排序的完成方式没有强烈的偏好,只是在多次加载时它是一致的。
答案 0 :(得分:0)
一种选择是强制查询是顺序的。例如,定义一个递归函数以在生成下一个查询之前获取一个查询的结果:
do_queue = (index, queues) ->
if index >= queues.length then return
queue = queues[index]
$.get "/queue/" + queue, (html) ->
$("#queues").append $("<tr>").html html
do_queue(index+1, queue)
然后这样称呼:
$ ->
$.get "/queues", (queues) ->
do_queue(0, queues)