我正在尝试构建一个在全局范围内存储JS对象数组的函数(我想从外部Prototype函数访问它)。但是,当我尝试返回'build'数组时,数组是未定义的(这可能是因为我需要一个合适的回调函数)。
如何以正确的方式实现这一目标?
function getMyJson(url){
var request = $.getJSON(url);
var items = [];
request.done(function(response) {
for (var key in response) {
if (response.hasOwnProperty(key)) {
var object = {
name: response[key].name,
id: response[key].id
}
items.push(object);
}
}
});
return items; // This returns 'undefined', probally because the for loop is still running
}
var data = getMyJson('data.json');
console.log(data); // undefined
提前致谢
答案 0 :(得分:0)
正如其他人所说,回调是可行的方法。
function getMyJson(url, callback){
var request = $.getJSON(url);
var items = [];
request.done(function(response) {
for (var key in response) {
if (response.hasOwnProperty(key)) {
var object = {
name: response[key].name,
id: response[key].id
}
items.push(object);
}
}
callback(items);
});
}
var data = getMyJson('data.json', function(items){
//items will be defined here.
});