Rxjs Observable.take(1) 与 Subscription.unsubscribe()

标签 rxjs

有什么区别吗

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

对比

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

最佳答案

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

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

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

看看 sample here

关于Rxjs Observable.take(1) 与 Subscription.unsubscribe(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40297826/

相关文章:

angular - 如何在 typescript 中定义观察者的类型

Angular2 可观察和 promise

angular - rxjs zip 两个 switchMap?

node.js - 如何用观察者替换订阅者?

angular - 为什么 rxjs 的 mergeMap 将数组变成单独的对象

angular - 可从 Angular2 中的 <button> 单击事件观察

javascript - 在 Angular 6 中一一处理 http 响应

javascript - ActivatedRoute.paramMap.switchMap 错误

javascript - 获取跨源请求的响应自定义 header

angular - 带 Angular 路由器的 RXJS - 'mergeMap' 不是函数