Я пытаюсь использовать RxJS Observables для фильтрации списка объектов на основе выбора пользователей.Чтобы получить список отфильтрованных объектов, мне нужно последовательно вызвать три отдельных сервиса и передать значения из предыдущего сервиса в следующий сервис.
ПРИМЕЧАНИЕ 1: Каждая из этих трех служб возвращает Observable
ПРИМЕЧАНИЕ 2: Каждая служба может возвращать произвольное количество результатов, каждое из которых необходимочтобы перейти к следующему сервису.
Мой код может продолжить нормально работать только после того, как третий сервис завершит отправку всех своих значений.
Вот что у меня сейчас:
this.firstService.getFirstResults(filterOption)
.subscribe(firstResult => this.secondService.getSecondResults(firstResult)
.subscribe(secondResult => this.thirdService.getThirdResults(secondResult)
.subscribe(thirdResult => this.processResult(thirdResult, firstResult),
null,
() => console.log("COMPLETE")))
);
Приведенный выше код работает для меня почти идеально.В конце концов, функция processResult()
правильно создает массив со всеми отфильтрованными объектами.
Однако я не знаю, как получить уведомление, когда последовательность Observables действительно завершена.Я надеялся, что секция complete
третьего сервиса выполнит эту работу, но она печатает на консоль несколько раз, а не один раз.
ПРИМЕЧАНИЕ 3: В финалевызов processResult()
Мне нужно передать как значение 3rdResult, так и соответствующее значение firstResult, возвращаемое из firstService.getFirstResults()
.