Условное сцепление нескольких запросов? - PullRequest
0 голосов
/ 10 октября 2018

Ниже приведен фрагмент того, чего я пытаюсь достичь (в классе компонентов):

this.dataService.fetchPerson()
            .mergeMap(...)
            .mergeMap(...)
            .mergeMap(
                (response: Person[]) => {
                    // If this.job_id > 0, where job_id is declared in the component class
                        // Perform next request, returns <Children[]>
                    // Else
                        // End chain
                }
            ).subscribe(...);

Сначала нужно выполнить несколько запросов, а затем это условие, которое определитесли цепь должна быть разорвана или должен быть сделан последний запрос.Я посмотрел некоторые примеры в Интернете, но они, кажется, немного отличаются от того, что я пытаюсь сделать?Поправьте меня, если я ошибаюсь.

Я пробовал ff:

.mergeMap(
    (response) => {
        if(response instanceof Person) {
            return this.dataService.getOtherInfo();
        } else {
            return Observable.empty;
        }
    })
.subscribe(
    (response: any) => { ... }
);

Но я получаю ошибки компиляции, и я обычно не уверен, что это правильный способсделать это.

ошибка TS2345: Аргумент типа (response: Person []) => ((scheduler ?: SchedulerLike) => Observable) |Наблюдаемый 'не доступен параметру типа' (значение: Person [], index: number) => ObservableInput '.

...