这有效:
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()调用需要一两秒钟,所以我需要等待它并在它之后执行操作。我认为问题在于代码执行顺序,但可能是因为我误解了如何正确地将数据传递给回调函数。
如果我可以将数据加载到我所有其他函数都可以访问的变量中,那会更好。
答案 0 :(得分:7)
此:
link_to category.name, articles_path(name: category.name.downcase)
应该是这样的:
getDataJSON(doStuffWithData());
否则它立即调用该函数并尝试将函数的结果传递给getDataJSON
答案 1 :(得分:1)
您需要在此调用中忽略括号
getDataJSON(doStuffWithData());
应为getDataJSON(doStuffWithData)
。原因是doStuffWithData是函数,doStuffWithData()是函数的retrun值。