Ajax 个结果的一致排序
Consistent ordering of Ajax results
我在 playframework 中有 Coffeescript 代码 运行,它基于几个 AJAX 查询构建 table。
$ ->
$.get "/queues", (queues) ->
$.each queues, (index, queue) ->
$.get "/queue/" + queue, (html) ->
$("#queues").append $("<tr>").html html
/queues
returns 队列名称列表。
/queue/name
returns HTML 描述队列 name
.
#queues
是 table,我在其中显示该描述。
这一切工作正常,但由于查询是异步的,追加调用每次都以不同的顺序执行,这意味着 table 内容在每次查询运行时随机重新排序。由于这是提供动态的当前状态,因此查询每三秒运行一次。
让行每次都以一致的顺序显示的好方法是什么?我有 index
,所以我可以尝试将数据添加到该行,但是如果第三个查询首先 returns,将它添加到第三行将不会很好地工作。
我对排序方式没有强烈偏好,只是它在多次加载时保持一致。
一种选择是强制查询顺序进行。例如,定义一个递归函数以在进行下一个查询之前获取一个查询的结果:
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)
我在 playframework 中有 Coffeescript 代码 运行,它基于几个 AJAX 查询构建 table。
$ ->
$.get "/queues", (queues) ->
$.each queues, (index, queue) ->
$.get "/queue/" + queue, (html) ->
$("#queues").append $("<tr>").html html
/queues
returns 队列名称列表。
/queue/name
returns HTML 描述队列 name
.
#queues
是 table,我在其中显示该描述。
这一切工作正常,但由于查询是异步的,追加调用每次都以不同的顺序执行,这意味着 table 内容在每次查询运行时随机重新排序。由于这是提供动态的当前状态,因此查询每三秒运行一次。
让行每次都以一致的顺序显示的好方法是什么?我有 index
,所以我可以尝试将数据添加到该行,但是如果第三个查询首先 returns,将它添加到第三行将不会很好地工作。
我对排序方式没有强烈偏好,只是它在多次加载时保持一致。
一种选择是强制查询顺序进行。例如,定义一个递归函数以在进行下一个查询之前获取一个查询的结果:
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)