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