我有这个递归函数,它假设通过一个 JSON 对象来查找所有子组。这是我所拥有的:
var subgroupIds = [];
this.getSubGroups = function (groupId) {
this.getGroups("groupId="+groupId, function(groups) {
if ($.isEmptyObject(groups)) {
return subgroupIds;
} else {
$.each(groups, function(index,group) {
subgroupIds.push(group.id);
this.getSubGroups(group.id);
});
}
});
}
...其中 getGroups 是返回所有组的异步函数。
我的问题是当它进行递归调用时,我收到错误消息:
Uncaught TypeError: Object #<Object> has no method 'getSubGroups'
我猜这是一个范围问题,但我无法弄清楚它有什么问题。有任何想法吗?
编辑:
正如Bergi 指出的那样,我需要回电。这就是我现在所拥有的:
var subgroupIds = [];
var that = this;
this.getSubGroups = function (groupId,callback) {
this.getGroups("groupId="+groupId, function(groups) {
if ($.isEmptyObject(groups)) {
return;
} else {
$.each(groups, function(index,group) {
subgroupIds.push(group.id);
callback(group.id);
that.getSubGroups(group.id);
});
}
});
}
现在的问题是当我调用回调时,它说函数未定义。
最终,我想返回一个子 group.id 的数组。我不知道怎么去那里......