У меня есть интерфейс REST API, который дает мне только первый уровень некоторой информации.
Так например я хочу собирать группы. Каждая группа может иметь подгруппы. Так, например, «Группа 1» имеет подгруппы «Группа А» и «Группа Б». «Группа А» имеет подгруппу «Группа X». И так далее.
Но API дает мне только первый уровень групп для имени группы. Поэтому я передаю «Группу 1» в API, и он возвращает «Группу A» и «Группу B». Чтобы получить вспомогательные группы группы А, мне нужно снова вызвать API. Но я не знаю, сколько итераций у этого будет.
Поэтому я подумал об использовании рекурсии, но я не продвинулся далеко.
Пока мой код:
getGroupChildren(group:string){ return this restService.getGroupChildren(group)}
getGroups():Promise<any>{
let collection:string[] = [];
return this.getGroupChildren("Group A").then((result)=> {
if(result.data.length !==0){
return this.getGroupChildren(data[0].groupName);
}
});
}
Теперь это вернет мне только первые Supgroups первого элемента.
Как я могу добиться того, чтобы всегда находили все Supgroup независимо от их количества? Может быть, хорошо использовать Observables?
Вот пример структуры одного вызова API:
{ "groupName" : "Group_1", "children" : ["Group_A", "Group_B"]}
then
обратного вызоваgetGroupChildren
и посмотреть, что произойдет после 1-й итерации? какое значение вы получаете/передаете дляdata[0].groupName
? - person palaѕн   schedule 19.03.2018async
вместо необработанных обещаний, чтобы упростить задачу. Фактическое решение неясно, потому что вопрос не содержит достаточно данных. Что именно должна возвращать функция? Он называется getGroups, но возвращает одну строку. - person Estus Flask   schedule 19.03.2018