首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rxjs Observable.take(1) vs Subscription.unsubscribe()

Rxjs Observable.take(1) vs Subscription.unsubscribe()
EN

Stack Overflow用户
提问于 2016-10-28 11:59:22
回答 2查看 14K关注 0票数 30

两者之间有什么区别吗?

代码语言:javascript
复制
Observable.pipe(take(1)).subscribe(...)

vs

代码语言:javascript
复制
const subscription = Observable.subscribe(() => {
   // Do something, then
   subscription.unsubscribe()
})
EN

回答 2

Stack Overflow用户

发布于 2016-10-28 14:48:10

subscribe相比,take(1)方法有许多优点

  1. 代码可读性(和优雅)。
  2. 第二种方法要求您持有和管理额外的变量。
  3. 第二种方法不会调用完整的处理程序。这是因为.take( 1 )实际上创建了一个新的可观察对象,它可能会产生单个项目并完成。
  4. 第二种方法适用于获取单个元素的简单情况,但如果您需要获取大于1的元素,take(4)将保持简单,而第二种方法将变得难以编码。

第三项是与rxjs相关的,其他的与编码风格有关。

看一看sample here

票数 24
EN

Stack Overflow用户

发布于 2016-12-02 05:52:25

在Angular2中,我发现自己同时使用了这两种范式。

第一个在方法内部最有意义,而第二个更适合在构造函数中使用,并在解构函数中进行清理。

代码语言:javascript
复制
doThing(){
    this.store.select('thing').pipe(take(1))
        .subscribe(item => {
            otherMethod(item)
        });
}

vs

代码语言:javascript
复制
class SomeClass{
    public val;
    private sub;
    constructor(){
        this.sub = this.store.select('thing')
            .subscribe(item => {
                this.val = item
            });
    }
    ngDestroy() {
        this.sub.unsubscribe()
    }
}
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40297826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档