因此,基本上,这是rxjs的新手,并且想知道,
我需要取消订阅Observable.of(data)还是在较新的rxjs版本中,仅订阅(data)?
即
import {of} from 'rxjs';
const sub = of(data).subscribe();
这是必要的吗?
sub.unsubscribe();
答案 0 :(得分:5)
此article中最好地描述了有限的和无限的Observable。
在特定的可预见时间范围内完成,例如网络请求或您的Observable.of()
通话。
可能永远不会完成,例如观察点击事件。
虽然实际上没有必要取消有限可观察项的订阅,但是取消订阅每个可观察项被认为是最佳实践,因为您通常并不真正知道它是否确实是有限的。
为了避免在代码中堆积多个订阅,最好使用高级rxjs功能,如本article所示。
Observable是事件流。您可以订阅此视频流并在该视频流使用subscribe
函数生成事件时获取更新
.subscribe(
onNext => {
// Called if there was a normal event, e.g. data is emitted
},
onError => {
// Called if there was an Error
},
onComplete => {
// Called if the event stream ends OR an Error is encountered
}
)
每个订阅都占用内存空间,只要Observable尚未完成,订阅就不会终止(但是即使使用了onNext()
-Function,该订阅仍然会收到更新,即使该组件在销毁)。
为了防止意外行为和内存泄漏,您必须退订。 Click to read more
答案 1 :(得分:1)
关于RxJS的更具体的答案是您不要取消订阅of
,因为它是一个Observable,它在完成发送给您的complete
值时会发出next
通知。
例如,对于此Observable of(1)
,通知的顺序如下:
next
通知,其值为1
。complete
通知,通知订阅者该源Observable已发出任何内容。Subscriber
个通知后, complete
个对象会自动退订: