这有效:
function getDataJSON() {
var queryString = "https://www.examplesite.com/someJSON.json";
$.getJSON(queryString, function(data) {
doStuffWithData(data)
});
}
function doStuffWithData(JSON) {
// some code that refers to JSON
}
getDataJSON();
但这会抱怨在doStuffWithData()中某个地方未定义变量(JSON):
function getDataJSON(callback) {
// Gets share data and runs callback when received
var queryString = "https://www.examplesite.com/someJSON.json";
$.getJSON(queryString, function(data) {
if(typeof callback === "function") {
callback(data);
}
});
}
function doStuffWithData(JSON) {
// some code that refers to JSON
}
getDataJSON(doStuffWithData());
我可能做错了什么? $ .getJSON()调用需要一两秒钟,因此我确实需要等待并在此之后做一些事情。我认为问题出在代码执行顺序上,但是可能是我误解了如何正确地将数据传递给回调函数。
如果我可以将数据加载到其他所有函数都可以访问的变量中,那就更好了。
最佳答案
这个:
getDataJSON(doStuffWithData());
应该是这样的:
getDataJSON(doStuffWithData);
否则,它将立即调用该函数,并尝试将函数的结果传递到getDataJSON中。