Я новичок в наблюдаемых RxJS и пытаюсь разрешить довольно простой вариант использования.
В службе я сначала выполняю вызов http, который возвращает элемент (как наблюдаемый).Элемент содержит массив идентификаторов, некоторые из которых повторяются.Для каждого отдельного идентификатора мне нужно вызвать другой сервис http (снова возвращает наблюдаемый) и добавить его возвращаемое значение к исходному элементу вместо соответствующего идентификатора.Эти вызовы должны происходить параллельно.Наконец, после завершения каждого звонка мой сервис должен возвращать наблюдаемую исходную вещь, теперь с ее подэлементами на месте.
Чтобы дать лучшую идею, это то, что будет выглядеть с обещаниями, а нечем наблюдаемые:
MyService() {
return HttpGetMainItem()
.then(item => {
var promises = _.uniq(item.subItems)
.map(sid => HttpGetSubItem(sid)
.then(subItem => {
// add to matching item.subItems
}));
// wait for all promises to complete and return main item
return Promise.all(promises).then(() => item);
});
}
Каков наилучший способ выполнить эту работу с наблюдаемыми?
РЕДАКТИРОВАТЬ: из ответов, кажется, я не очень ясно.Пример с обещаниями просто для ясности, в моем случае http-вызовы на самом деле являются HttpClient.get от Angular, поэтому они возвращают наблюдаемые - я ищу все с помощью наблюдаемых.