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)