В настоящее время я работаю над функцией для приложения Angular с использованием NGRX, в котором действие отправляется для получения некоторых данных с использованием идентификатора; затем, используя объект ответа из первого вызова службы, делается второй запрос, чтобы получить дополнительные сведения из другой конечной точки. После того, как все сделано, данные/действия могут продолжать поступать.
Проблема: я ищу способ выполнить действия, описанные выше, в одном эффекте, без объединения эффектов/действий в цепочку, так как это может привести к тому, что отображаемый компонент будет неполным.
Я видел несколько примеров использования forkJoin, но не уверен, что это применимо, поскольку это не параллельные вызовы, а упорядоченные.
Код примерно такой:
this.actions$.pipe(
ofType(fetchAllData),
switchMap(action => {
const one = this.api.getById(serviceUrl, action.Id);
return one.pipe(
switchMap((data) => {
cons two = this.api.getMoreDetail(serviceUrl, two.id)
return fetchDataActions(data, []);
})
);
})
)
);
Так что в идеале данные должны содержать все, что мне нужно, и готовы для заполнения моего компонента.
Примечания: - приведенный выше код не работает - вызовы должны выполняться по порядку, так как ответ от вызова № 1 будет использоваться в качестве параметра для вызова № 2 - выполнение упорядоченных диспетчерских действий не работает, поскольку данные компонента неполны при отображении.