loadJSON(path, callback) {
console.log("path: " + path);
var xobj = new XMLHttpRequest();
xobj.overrideMimeType("application/json");
xobj.open('GET', path, true);
xobj.onreadystatechange = function() {
if (xobj.readyState == 4 && xobj.status == "200") {
callback(xobj.responseText);
}
};
xobj.send(null);
}
上面是一个在本地访问json文件的函数。 然后从`foobar()'解析检索到的数据。 但是,从回调函数的“外部”,变量“json”无法访问。 我已经搜索了类似的SO问题和异步概念,但仍然无法找到解决问题的方法。访问javascript中一个回调函数的“外部”变量
function foobar() {
var json;
loadJSON("data.json", function(response) {
json = JSON.parse(response);
console.log(json[0].name); // Successfully shows the result
});
console.log(json[0].name); // TypeError: json is undefined
}
有没有办法访问回调变量“外部”?
http://stackoverflow.com/questions/14220321 /我怎么做 - 我从一个异步调用返回响应 –
[为什么我的变量在函数内部修改后没有改变? - 异步代码引用](http://stackoverflow.com/questions/23667086/why-is-my-variable-unaltered-after-i-modify-it-inside-of-a-function-asynchron) – Andreas
检查两个链接现在我得到了一个更好的理解**为什么**它不能被称为'外部'的回调,现在我通过在'loadJSON()'中实现函数来解决我的问题,但是我仍然没有得到**可以访问它之外的变量。我想知道有一个解决方法不是为什么。 – HUKS