Ajax结果的一致排序

时间:2016-02-08 23:54:47

标签: ajax coffeescript playframework-2.4

我在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,所以我可以尝试将数据添加到该行中,但如果第三个查询首先返回,则将其添加到第三行将无法正常工作。

我对排序的完成方式没有强烈的偏好,只是在多次加载时它是一致的。

1 个答案:

答案 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)