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 の配列を返したいと思います。どうやってそこに着くのかわからない...