【问题标题】:Do I need to unsubscribe a listener to stream that ends in Kefir?我是否需要取消订阅以 Kefir 结尾的流的侦听器?
【发布时间】:2016-01-25 18:57:22
【问题描述】:

我正在从 BaconJS 迁移,这不是问题,因为您可以在订阅者中返回 Bacon.noMore 以取消订阅。在 Kefir 中,取消订阅更像是样板文件,因此自然的问题是——对于结束的流,您需要取消订阅侦听器(也称为回调)还是 Kefir 会自动为您处理?

const oneTimeStream = Kefir.constant('foo') // this ends after firing foo
const listener = function() { //... }

oneTimeStream.onValue(listener)
// do I need to unsubscribe #listener?

【问题讨论】:

    标签: kefir.js


    【解决方案1】:

    根据图书馆作者的说法,答案是“否”:https://github.com/rpominov/kefir/issues/182

    是的,你不需要。所有侦听器都会自动删除。此外,当您订阅已结束的流时,它是一个 noop。

    顺便说一句,因此您通常可以通过使用 take/takeWhile/takeUntilBy/etc 限制流来避免手动取消订阅。

    stream.take(1).onValue(fn)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-12
      • 2020-11-09
      • 2020-07-05
      • 1970-01-01
      • 2021-04-01
      • 2016-03-27
      相关资源
      最近更新 更多