var json = $.getJSON("sun.json", function(json1) {
$.each(json1, function(key, data) {
//Json Code
});
});
json.done(function() {
$.getJSON("sun2.json", function(json1) {
$.each(json1, function(key, data) {
//More json Code
});
});
});
可以这样做吗?我想用第一个json文件生成一些东西,然后当它完成时,用第二个json文件做更多的东西。我不明白为什么它不起作用,但我想我在这里得到一些澄清以防万一。
答案 0 :(得分:3)
是的,您可以在$.getJSON
功能中执行.done
。
也就是说,链接$.getJSON
电话的好方法(感谢jquery promise interface)将是使用then
函数,可能看起来像这样...
$.getJSON("sun.json", function(json) {
$.each(json, function(key, data) {
//do something
});
})
.then(function() {
return $.getJSON("sun2.json", function(json) {
$.each(json, function(key, data) {
//do something with sun2.json
});
});
})
.then(function() {
return $.getJSON("sun3.json", function(json) {
$.each(json, function(key, data) {
//so something with sun3.json
});
});
});
链接这样的延迟承诺会阻止"callback pyramid of doom"允许更平坦,更易读的代码结构。
附录 感谢@BenjaminGruenbaum清除我早先的困惑!