Почему моя функция подписки печатает объект вместо результата http-запроса? - PullRequest
0 голосов
/ 12 января 2019

Почему этот код печатает это:

Observable {_isScalar: false, source: Observable, operator: MapOperator}

Вместо массива, возвращаемого моим сервисом?

    const trendingRentals: Observable<any> = this.rentalService.getRentals();
    const commonRentals: Observable<any> = this.rentalService.getCommonRentalsTest();
    const luxuryRentals: Observable<any> = this.rentalService.getLuxuryRentalsTest();

    const concatenation =  concat( [trendingRentals, commonRentals, luxuryRentals]);
    concatenation.subscribe(
      x => console.log(x)
    )

Ответы [ 3 ]

0 голосов
/ 12 января 2019

Статический оператор concat здесь принимает Observable (s) в качестве параметра (ов), а не Array .

Если вы передаете Массив наблюдаемых, вы вернете вложенные наблюдаемые.

Прочитайте Интернет для более полного ответа и найдите здесь и здесь некоторые ссылки.

0 голосов
/ 12 января 2019

Исходный код, который вам звонил

concat([obs1, obs2, ..., obsN])

на техническом уровне это просто случай предоставления неверного аргумента функции concat, как и ожидалось

concat(obs1, obs2, ..., obsN)

как отметил и Андрей. Вы можете прочитать больше о функциях rxjs на learn-rxjs

Чтобы углубиться в немного глубины: concat возвращает наблюдаемое из других наблюдаемых. Когда concat вызывается при выполнении, он выполняет каждую из наблюдаемых вами вставленных объектов и ждет, пока каждая из них не завершится по порядку, прежде чем вернуться.

Массив [obs1, ..., obsN] не является наблюдаемым, поэтому «странный» ответ.

0 голосов
/ 12 января 2019

я модифицировал const concatenation = concat( [trendingRentals, commonRentals, luxuryRentals]); за const concatenation = concat( trendingRentals, commonRentals, luxuryRentals); Теперь он работает отлично, но я не понимаю, почему ... Кто-то может объяснить мне, что происходит?

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