Rxjs可观察到。获取(1)vs订阅。取消订阅()

Rxjs可观察到。获取(1)vs订阅。取消订阅(),rxjs,Rxjs,两者之间有什么区别吗 Observable.pipe(take(1)).subscribe(...) vs 与订阅相比,take(1)方法有许多优点: 代码可读性(和优雅) 第二种方法需要保存和管理额外的变量 第二种方法不会调用完整的处理程序。这是因为.take(1)实际上创建了一个新的可观察项,该可观察项可能生成一个单独的项并完成 第二种方法适用于使用单个元素的简单情况,但如果需要使用多于1的元素,take(4)将保持简单,而第二种方法将变得难以编码 第三项是与rxjs相关的,其他与编码风格

两者之间有什么区别吗

Observable.pipe(take(1)).subscribe(...)
vs

与订阅相比,
take(1)
方法有许多优点:

  • 代码可读性(和优雅)
  • 第二种方法需要保存和管理额外的变量
  • 第二种方法不会调用完整的处理程序。这是因为.take(1)实际上创建了一个新的可观察项,该可观察项可能生成一个单独的项并完成
  • 第二种方法适用于使用单个元素的简单情况,但如果需要使用多于1的元素,
    take(4)
    将保持简单,而第二种方法将变得难以编码
  • 第三项是与rxjs相关的,其他与编码风格相关


    看一看

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

    第一种方法在方法内部最有意义,而第二种方法最好在构造函数中使用,在解构器中进行清理

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


    完全同意eleganceRxJS 6:this.store.select('thing').pipe(take(1)).subscribe(item=>{otherMethod(item)});可能重复的
    doThing(){
        this.store.select('thing').pipe(take(1))
            .subscribe(item => {
                otherMethod(item)
            });
    }
    
    class SomeClass{
        public val;
        private sub;
        constructor(){
            this.sub = this.store.select('thing')
                .subscribe(item => {
                    this.val = item
                });
        }
        ngDestroy() {
            this.sub.unsubscribe()
        }
    }