Я немного борюсь с тем, чтобы придумать хорошее решение для выполнения нескольких http-запросов на основе результатов каждого из них. До сих пор я работал хорошо с switchMap, пока это только 2 http-запроса. Однако я обнаружил, что мне нужно выполнить 3, и я не уверен, как это сделать с помощью switchMap или есть ли лучшее решение для этого.
В принципе, я буду ждать ответа, и если он возвращается пустым, я хочу выполнить второй запрос, а если он возвращается пустым, я хочу выполнить третий запрос.
Позвольте мне привести упрощенный пример того, что я получил так far:
getData(): Observable<number> {
const $subject = new Subject<number>();
// loadData() takes in an id to specify what data to load
service.loadData(1).pipe(
switchMap(response => {
if(response.length === 0) {
return service.loadData(2);
}
else {
return of(response);
}
}),
).subscribe(result => {
$subject.next(result);
$subject.complete();
});
return $subject.asObservable();
Теперь это работает просто отлично, моя проблема в том, что вызов loadData (2) может также вернуть ответ с length = 0, и в этом случае мне нужно вызвать LoadData (3).
Я попытался добавить еще одну SwitchMap в SwitchMap, но, похоже, это не сработало должным образом. Поэтому мой вопрос: как я могу проверить длину ответа loadData (2), и если он равен 0, вернуть service.loadData (3)?
Любая помощь или советы приветствуются: )