var locations = [];
$.getJSON("locations.json", function(json) {
console.log(json);
json.forEach(function(locItem){
locations.push(locItem);
});
});
console.log(locations);
第3行日志确实打印了我的json列表,但第9行只记录了[]。我尝试使用window.locations,global.locations或定义像
这样的东西var self = this;
在全局范围内,然后在函数内使用self.locations。它们都不起作用。
答案 0 :(得分:0)
这是因为执行顺序如下:
// create empty array
var locations = [];
// attempt to get json file (locations is unchanged)
$.getJSON("locations.json", callback);
// print out empty locations variable
console.log(locations);
// json is finally retrieved, and the callback function is processed
function callback(json) {
console.log(json);
json.forEach(function(locItem){
locations.push(locItem);
});
});
在检索到json之前,不会调用回调函数。 等待不会发生这种情况。
答案 1 :(得分:0)
尝试:
var locations = [];
$.getJSON("locations.json", function(json) {
console.log(json);
json.forEach(function(locItem){
locations.push(locItem);
});
}).then(function() {
console.log(locations);
});