Javascript 回调函数的作用域

Javascript 回调函数的作用域,javascript,scope,xmlhttprequest,Javascript,Scope,Xmlhttprequest,我想实现一个函数,它执行ajax请求(响应是json),直到响应中没有“next”属性为止。之后,我需要执行一些回调函数。最好的方法是什么?由于回调的作用域错误,我下面的代码无法工作,我无法想象如何正确地传递它 _requestPhotos = function(url, callback) { getYFContent(url, function(data) { // some actions if (!!data.next) { _requestPhotos

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

_requestPhotos = function(url, callback) { getYFContent(url, function(data) { // some actions if (!!data.next) { _requestPhotos(data.next, callback); } else { callback(smth); } }); }; _requestPhotos=函数(url、回调){ getYFContent(url、函数(数据){ //一些行动 如果(!!data.next){ _请求照片(data.next,回调); }否则{ 回拨(smth); } }); };
您发布的脚本中没有明显的错误。例如,等效测试可以如下所示:

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);
日志结果是
“结果是:3”
,这是您所期望的结果


错误在别处。您第一次是如何调用它的,您传递给它的回调是什么(以及它是如何定义的),GetyContent到底做什么?

这不仅仅是一个递归函数。问题是“getYFContent”是ajax请求函数,所有操作都在它的第二个参数中描述,这是一个回调函数(如$.get)。(续)…我想用适当的值填充“photos”数组。为了得到它们,我应该一个接一个地不断提出请求。这就是问题所在-getYFContent()递归调用和回调(函数必须在发送所有请求并获得所有照片后执行)fn的作用域只是第一次迭代。啊,对了-那么您可以为
getYFContent
添加另一个参数吗?这样,您就可以继续传递回调。