javascript - 为什么 SoundCloud API 会导致循环以不同的顺序列出数据

标签 javascript jquery json loops soundcloud

我制作了一个 JSON 文件来存储 SoundCloud URL。然后我的 $.each() 加载 JSON 文件的数据,并根据这些数据从 SoundCloud API 收集更多数据。不知何故,SoundCloud 导致我的循环以随机顺序加载数据,而不是按照 JSON 文件中的方式加载数据。

这是我获取数据和 SoundCloud 位的代码:

$.getJSON("http://www.json-generator.com/api/json/get/bLjOHIYsAy?indent=2", function(data){ //Link of the playlist

$.each(data.PlayListArray, function(key, val){ //navigate to array called PlayListArray
     var songLink = val.URL; // the value of URL in the array
        SC.get('/resolve', { url: songLink }, function(track) { //convert SoundCloud URLs to ids to get their data.
        $("#demo").append("<p id= "+ track.id + ">" + track.title + "</p>");
        });

});
});

当我在循环中没有任何 SoundCloud 代码的情况下加载数据时,顺序是正确的。但是对于 soundcloud,每次刷新页面时,顺序都是不同的。请看一下演示:http://jsfiddle.net/Fq2Rw/

在 JSFiddle 上,请多次运行代码,您每次都会看到顺序发生变化。这是为什么?任何想法?或者有什么不同的方式来循环 JSON?

最佳答案

您的代码正在循环遍历每个 SC.get,但它不会等待 SC.get 完成。因此每次重新加载时的顺序都是不同的。

我会将其更改为使用 SC.get 的回调参数来加载下一个 URL。

<小时/>

经过进一步思考,我建议使用 jquery 延迟函数来链接事件。

请看这篇文章: Soundcloud Javascript API SC.get() will not allow me to change a variable outside of the function

关于javascript - 为什么 SoundCloud API 会导致循环以不同的顺序列出数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24420781/

相关文章:

javascript - 通过 CSS 与 HTML5 Canvas 在网页上移动图像的性能

Jquery 表单提交不起作用?

javascript - jQuery 添加和删除行问题

c# - 使用 wp8 内置 json 类反序列化带有空格的 Json 属性名称

java - 在 JAVA 7 中消除 StringBuilder 对象(在循环中运行)的最后一个逗号的方法?

javascript - 粗糙的动画

javascript - 从更新面板异步回发后保持滚动位置

javascript - 尝试重置集合时出现 Backbone 错误

jQuery 问题 :first-how to solve

javascript - 如何在 mongodb 中创建动态文档键