0

我将曲目 ID 存储在用作播放列表的数据库中。

使用 jQuery $.get() 检索轨道 ID 数据,并以 JSON 数组的形式返回。

接下来一个 jQuery $.each() 循环一个 SC.get('/tracks/') ,它传递了相关的轨道 id。

$.each(pl_array.track, function(i) {
    var pl_track_id = '/tracks/' + pl_array.track[i].id;
    SC.get(pl_track_id,function (tracks) {
        //looped code here
    });
});

问题是 SC.get() 调用是异步的,并且会导致轨道被随机排序。jQuery $.get() 可以选择禁用异步并同步运行。有什么办法可以用 SC.get() 函数做这样的事情,还是有其他选择?

4

1 回答 1

1

不要那样做。
SJAX 冻结浏览器并且非常烦人。

如果您真的想要同步处理,请使用递归而不是循环:

var items = ...;
function processItem() {
    var item = items.unshift();
    SC.get(item.id. function() { 
        ...
        if (items.length)
            processItem();
    });
}

但是,一次发送所有请求(您现在正在做的方式)会快得多,然后在它们全部进入后对结果进行排序。

于 2012-03-16T16:52:50.880 回答