我希望有人可以帮我找到更可靠的方法。
我们有3个网址,无法更改 第一个getJSON调用需要url1来获取所有部分,在它的回调函数中我们有一个循环,并且在每次迭代时我们使用url2 + section name进行第二次getJSON调用以获取所有文章id,然后第二次调用的回调函数使用每个id使用url3 + id进行第三次getJSON调用以获取每篇文章的所有细节。这里没有显示更多代码,但主要问题来自于此块。
$.getJSON(url1, function(sections) {
for(var i=0; i < sections.length; i++) {
$.getJSON(url2 + sections.contents[i].name, function(ids) {
$.getJSON(url3 + ids.contents[0].id, function(article) {
// ==== Code to create article's body using only the first result ====
})
for(var j=0; j < ids.length; j++) {
// ==== Code to create a list of links to all the articles ====
}
})
}})
我知道必须有更好的方法来做到这一点,但我仍然不知道如何做。
jsons中信息的结构不能改变,所以这些调用必须根据前一个的结果进行,但我想避免在循环内进行调用。
问题:正如预期的那样,由于第二次json调用在循环内,有时第一次迭代的结果没有到达,但第二次迭代的结果有(当i =在这种情况下为1)。
提前感谢您的时间。
答案 0 :(得分:0)
你可以getJSON(url).done(function(json) {})
确保在.done块内完成调用并且结果可用。