Почему операторы (tap, map) не вызываются на внутреннюю наблюдаемую, при использовании combLatest? - PullRequest
1 голос
/ 13 марта 2020

Почему операторы tap и map внутренней наблюдаемой не вызываются? combineLatest следует подписаться на наблюдаемые, которые он получает в obsArr, верно? Почему эта подписка не запускает эти операторы?

const obsArr = [];

[[1, 2], [3, 4], [5, 6]].map(arr => {

  const observable = from(arr);

  observable.pipe(
    tap(item => {
      // this is NOT called
      console.log('tap', item)
    }),
    map(item => {
      // this is NOT called
      return item * -1;
    })
  );

  obsArr.push(observable);
});

combineLatest(obsArr).subscribe(latestValues => {
  console.log(latestValues);
  // LOG: [2, 4, 5]
  // LOG: [2, 4, 6]
});

Рабочий стек стека: https://rxjs-y2h4rn.stackblitz.io

Спасибо за объяснение!

1 Ответ

4 голосов
/ 13 марта 2020

Проблема в том, что вы добавляете канал к наблюдаемой, но помещаете исходную наблюдаемую в массив. Вместо этого вы должны pu sh модифицированная наблюдаемая:

[[1, 2], [3, 4], [5, 6]].map(arr => {

  const observable = from(arr);

  obsArr.push(observable.pipe(
    tap(item => {
      console.log('tap', item)
    }),
    map(item => {
      return item * -1;
    })
  ));
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...