Как использовать zip с switchMap? - PullRequest
       6

Как использовать zip с switchMap?

0 голосов
/ 28 августа 2018

Я занимаюсь разработкой приложения angular 6, и в моем компоненте у меня есть этот код:

 ngOnInit() {
   this.$subscription = this.route.params
     .pipe(map(param => param['id']))
     .pipe(switchMap(id => {
        this.id = id;
        console.log(this.id);
        return zip(
          this.remote1.getDetail(this.id),
          this.remote2.getDetail(this.id),
          this.remote3.getDetail(this.id)
    )
    })).subscribe(result => {
      console.log(result);
 }

Когда я запускаю этот код, я получаю эту ошибку на консоли:

ОШИБКА TypeError: Вы указали недопустимый объект, где ожидался поток. Вы можете предоставить Observable, Promise, Array или Iterable. на подписку (vendor.js: 181613) at subscribeToResult (vendor.js: 181765) в SwitchMap .....

Я правильно получил console.log(this.id), но не console.log(result).

Все методы внутри оператора zip возвращают Observable. Что мне здесь не хватает?

1 Ответ

0 голосов
/ 28 августа 2018

Zip принимает наблюдаемые в качестве входных данных signature: zip(observables: *): Observable, поэтому должно быть:

ngOnInit() {
   this.$subscription = this.route.params
     .pipe(map(param => param['id']))
     .pipe(switchMap(id => {
        this.id = id;
        console.log(this.id);
        return zip(
          of(this.remote1.getDetail(this.id)),
          of(this.remote2.getDetail(this.id)),
          of(this.remote3.getDetail(this.id)),
    )
    })).subscribe(result => {
      console.log(result);
 }

https://www.learnrxjs.io/operators/combination/zip.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...