我想实现一个执行ajax请求的函数(响应是json),直到响应中没有“next”属性。之后我需要执行一些回调函数。最好的方法是什么?由于错误的回调范围,下面的代码不起作用,我无法想象如何正确传递它。
_requestPhotos = function(url, callback) { getYFContent(url, function(data) { // some actions if (!!data.next) { _requestPhotos(data.next, callback); } else { callback(smth); } }); };
答案 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究竟做了什么?