在这两个示例中,subject$
的行为是否完全相同?
import { BehaviorSubject, Observable } from 'rxjs';
let source: Observable<number>;
let subject$: Observable<number>;
subject$ = new BehaviorSubject(0);
source.subscribe(x => {
subject$.next(x);
});
import { Observable } from 'rxjs';
import { shareReplay, startWith } from 'rxjs/operators';
let source: Observable<number>;
let subject$: Observable<number>;
subject$ = source.pipe(
startWith(0),
shareReplay(1)
);
答案 0 :(得分:1)
它们的重播行为是相同的,但是可以使用shareReplay而不是BehaviorSubject配置发射重播的次数。主要区别在于shareReplay是一个运算符,可以将其添加到管道中并将任何源流转换为重播值。 BehaviorSubject是仅重播值的类。