问题 Rxjs Observable.take(1)vs Subscription.unsubscribe()


之间有什么区别吗?

Obsevable.take(1).subscribe(...)

VS

const subscription = Obsevable.subscribe(() => {
//Do something , then
subscription.unsubscribe()
})

12384
2017-10-28 03:59


起源



答案:


take(1) 方法有很多优点 subscribe

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

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

看看一个 这里有样品


10
2017-10-28 06:48



完全赞同优雅 - JLavoie


答案:


take(1) 方法有很多优点 subscribe

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

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

看看一个 这里有样品


10
2017-10-28 06:48



完全赞同优雅 - JLavoie


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

第一个在方法内部最有意义,其中第二个在构造函数中更好地使用,在解构器中进行清理。

doThing(){
    this.store.select('thing')
        .take(1)
        .subscribe(item => {
            otherMethod(item)
        });
}

VS

class SomeClass{
    public val;
    private sub;
    constructor(){
        this.sub = this.store.select('thing')
            .subscribe(item => {
                this.val = item
            });
    }
    ngDestroy() {
        this.sub.unsubscribe()
    }
}

5
2017-12-01 21:52