在rxjs主题上调用()的目的是什么?
例如:在可观察的takeUntil()通知程序上调用complete。为什么我们需要这样做,而不只是调用next()并完成它呢?
如果这只是个会议,为什么会这样?
发布于 2018-09-25 18:20:02
通常会在主题上调用complete,以便通过流发送completed事件。这样做是为了触发等待通知的观察者。例如:
var subject = new BehaviorSubject<int>(2);
var subjectStream$ = subject.asObservable();
var finalize$ = subjectStream$.pipe(finalize(()=> console.log("Stream completed")));
var fork$ = forkJoin(subjectStream$,of(1));
....
finalize$.subscribe(value => console.log({value}));
//output: 2, notice that "Stream completed" is not logged.
fork$.subcribe(values => console.log({values});
// no output, as one of the inner forked streams never completes此外,是一种安全措施,以避免我。当对源流调用完成时,泄漏将移除对所有订阅观察者的引用,从而允许垃圾收集器最终释放任何未订阅的Subscription实例。
https://stackoverflow.com/questions/52504226
复制相似问题