为了避免组件内部的 Observable 内存泄漏,我takeUntil()在订阅 Observable 之前使用了运算符。
我在我的组件中写了这样的东西:
private unsubscribe$ = new Subject();
ngOnInit(): void {
this.http
.get('test')
.pipe(takeUntil(this.unsubscribe$))
.subscribe((x) => console.log(x));
}
ngOnDestroy(): void {
this.unsubscribe$.next();
this.unsubscribe$.complete(); // <--- ??
}
Run Code Online (Sandbox Code Playgroud)
最后我的问题如下:
我需要写this.unsubscribe$.complete();还是next()就够了?
是unsubscribe$要由垃圾收集器没有完成被抓住?
请解释是否存在差异或无关紧要。我不希望我的组件出现内存泄漏。
我有连接的服务Subject()做分页.我正在使用next(newData)传递给主题,这让事情保持活力,现在我需要complete()在每个ajax调用上使用并将其传递给主题.但在做了一个之后,complete()我开始得到错误.
我想知道,如果一旦被触发,我们仍然可以传递Subject可观察量吗?next(newData)completed()