任何需要先取消订阅 RxJS()
Posted
技术标签:
【中文标题】任何需要先取消订阅 RxJS()【英文标题】:Any need to call unsubscribe for RxJS first() 【发布时间】:2018-09-15 22:32:48 【问题描述】:在以下代码中:-
RxJS.Observable.of(1,2).first().subscribe((x) => console.log(x););
给定运营商first()
,是否需要取消订阅?
【问题讨论】:
【参考方案1】:first()
将在 observable 发出第一项后完成。
另外subscribe()
接受三个参数,最后一个是完整的回调。运行以下代码将输出 1 后跟 'done'。
Rx.Observable.of(1)
.subscribe(
(x) => console.log(x), // next
(x) => console.error(x), // error
() => console.log('done') // done
)
【讨论】:
【参考方案2】:对于提供的示例,您不需要unsubscribe
,也不需要调用first
,因为Observable.of(1)
在发出其第一个(也是最后一个)值后实际上完成。
【讨论】:
已更改为 1,2 但您的答案仍然正确,因为您提到它完成。【参考方案3】:没有。拨打first()
后自动退订。 RxJS 6 的当前语法是 observable.pipe(first()).subscribe(func);
。
documentation 声明:
如果不带参数调用,
first
会发出源 Observable 的第一个值,然后完成。
【讨论】:
认为您缺少)
:)
当源 observable 从不发出值时会发生什么,这是否意味着 Subscription 停留在那里并可能造成内存泄漏?
@Gagan 是的,它会造成内存泄漏。
那么这种情况下如何添加退订呢?以上是关于任何需要先取消订阅 RxJS()的主要内容,如果未能解决你的问题,请参考以下文章