Почему я не могу передать объект BehaviourSubject? - PullRequest
0 голосов
/ 05 мая 2019

Я не уверен, почему subscribe работает с BehaviourSubject, но не pipe.

Например, распечатан код ниже?

subscribe: 123
subscribe: 456

Почему не печатается

pipe: 123
pipe: 456

Код:

import {tap } from 'rxjs/operators';
import { BehaviorSubject } from 'rxjs';

const subject = new BehaviorSubject(123);
subject.subscribe(p => console.log("subscribe: " + p));
subject.pipe(
  tap(p => {console.log("pipe:" + p);})
)
subject.next(456);

1 Ответ

2 голосов
/ 06 мая 2019
subject.pipe(
  tap(p => {console.log("pipe:" + p);})
)

Вы только касаетесь наблюдаемого здесь.Вам нужно будет подписаться отдельно в этой теме, чтобы прослушивание работало.Следующий код даст вам требуемый журнал консоли:

subject.pipe(
  tap(p => {console.log("pipe:" + p);})
).subscribe();

Если вы должны подписаться только один раз, то вы можете попробовать следующий код:

const abc$ = new BehaviorSubject(123).asObservable().pipe(
  tap((val) => console.log('pipe: ', val))
);
abc$.subscribe((val) => console.log('subscribe: ', val));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...