1

这真的让我:

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 完成之前,似乎从未执行或执行过回调函数。

我需要专家的帮助!

4

2 回答 2

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
}
于 2013-02-03T22:07:17.497 回答
2

getJSON调用是异步的,因此您将callback在响应到达之前调用该函数。

此外,在调用getJSON. 结果到达后也不会调用其中的代码,它只是一个单独的块,在调用之后以及结果到达之前运行。

将回调函数作为参数放入调用中getJSON

function request(argX, callback) {
  $getJSON(parameter, callback);
}
于 2013-02-03T22:08:02.203 回答