回调函数的范围

时间:2011-01-26 21:36:55

标签: javascript scope xmlhttprequest

我想实现一个执行ajax请求的函数(响应是json),直到响应中没有“next”属性。之后我需要执行一些回调函数。最好的方法是什么?由于错误的回调范围,下面的代码不起作用,我无法想象如何正确传递它。

_requestPhotos = function(url, callback) {
  getYFContent(url, function(data) {
    // some actions

    if (!!data.next) {
      _requestPhotos(data.next, callback);
    } else {
      callback(smth);
    }
  });
};

1 个答案:

答案 0 :(得分:0)

您发布的脚本没有明显的错误。例如,等效测试可能如下所示:

alertResult = function(text) {
   console.log("Result is: " + text);
}

doRecursive = function(data, callback) {
   if(!!data.next) {
      doRecursive(data.next, callback);
   } else {
      callback(data.value);
   }
}

var d = { value: 1, next: { value: 2, next: { value: 3 }}};

doRecursive(d, alertResult);

日志结果为"Result is: 3",这正是您所期望的。

错误在其他地方。你是如何第一次调用它,你传递给它的回调是什么(以及它是如何定义的)以及getYFContent究竟做了什么?