这真的让我:
for(var i=0; i<10; i++) {
(function(x) { //use a closure to hold the "i" value
request(arg[x], function(n) {
//do something with the data returned from $getJSON
console.log(n);
});
})(i) //is this syntax correct?
}
function request(argX, callback) { //is this syntax correct?
$getJSON(parameter) {
//get request result
...
}
callback(); //after request() function is completed, trigger the callback function
//is this syntax right?
}
我使用回调函数的原因是因为我想操纵getJSON的结果,所以我需要等待请求函数完成。
我还需要将回调函数与循环索引“i”值绑定。
我已经播放了很长一段时间的语法,但是怎么没有从控制台日志中返回任何内容?似乎在$ getJSON完成之前,回调函数从未执行或执行过。
我需要专家的帮助!
答案 0 :(得分:2)
当ajax调用完成后,您需要执行回调函数:
for(var i=0; i<10; i++) {
(function(x) {
request(arg[x], function(n) {
console.log(n);
});
})(i);
}
function request(argX, callback) {
$.getJSON('/url/json/', callback); //reference callback function
}
答案 1 :(得分:2)
getJSON
调用是异步的,因此您需要在响应到达之前调用callback
函数。
在调用getJSON
之后,您还有一个代码bloack。在结果到达之后,代码将不会被调用,它只是在调用之后运行的单独块,也是在结果到达之前。
将回调函数作为参数放入getJSON
:
function request(argX, callback) {
$getJSON(parameter, callback);
}