Так что я пытаюсь обернуть голову вокруг Observables, и по большей части они имеют смысл - но все документы предполагают, что вы на самом деле работаете с потоком данных - и Angular делает каждый вызов http по умолчанию наблюдаемым даже если это не потоки, а изолированные возвращаемые значения, что вызывает у меня некоторую путаницу.
Итак, я делаю http-вызов, который возвращает массив объектов. Затем мне нужно отобразить этот массив и создать новый HTTP-вызов на основе ключа в каждом объекте. Затем мне нужно собрать все ответы от этих вызовов и отобразить исходный массив, чтобы установить свойство на основе ответов от этого второго массива вызовов.
Извините кодекс Судо
this._http.get<>(url).subscribe(value => myData = value);
, который возвращает массив типа
[
{ clientId: 1, ..additional properties},
{ clientId: 2, ..additional properties},
]
Тогда мне нужно сопоставить это и породить новые http-вызовы, например
response.map(item => {
this._http.get(`someurl/${item.clientId})
}
Затем мне нужно объединить все эти вызовы в один блок данных, чтобы я мог сделать что-то вроде
myData.map(item => {
item.fullClient = ArrayOfClientReturns.find(client => client.id === item.clientId);
}
Моя проблема в том, что я полностью понимаю, как сделать это с обещаниями, но с наблюдаемыми я действительно не уверен. Я понимаю, как использовать pipe (map ()) для объединения наблюдаемых, но я не понимаю, как отобразить массив данных и создать коллекцию наблюдаемых, основанных на ответе исходной наблюдаемой, а затем ждать, пока они все разрешите, затем заново сопоставьте исходный набор данных следующим образом.
Я уверен, что мне просто не хватает правильного метода в документах rxjs, но каждый пример показывает объединение наблюдаемых, которые уже существуют, прежде чем вы попытаетесь объединить их.
Если бы кто-то мог указать мне правильное направление, я был бы благодарен.