【问题标题】:Any need to call unsubscribe for RxJS first()任何需要先取消订阅 RxJS()
【发布时间】:2018-09-15 22:32:48
【问题描述】:

在以下代码中:-

RxJS.Observable.of(1,2).first().subscribe((x) => console.log(x););

给定运营商first(),是否需要取消订阅?

【问题讨论】:

    标签: rxjs rxjs5


    【解决方案1】:

    first() 将在 observable 发出第一项后完成。

    另外subscribe() 接受三个参数,最后一个是完整的回调。运行以下代码将输出 1 后跟 'done'。

    Rx.Observable.of(1)
      .subscribe(
      (x) => console.log(x),    // next
      (x) => console.error(x),  // error
      () => console.log('done') // done
    )
    

    【讨论】:

      【解决方案2】:

      对于提供的示例,您不需要unsubscribe,也不需要调用first,因为Observable.of(1) 在发出其第一个(也是最后一个)值后实际上完成

      【讨论】:

      • 已更改为 1,2 但您的答案仍然正确,因为您提到它完成。
      【解决方案3】:

      没有。拨打first()后自动退订。 RxJS 6 的当前语法是 observable.pipe(first()).subscribe(func);

      documentation 声明:

      如果不带参数调用,first 会发出源 Observable 的第一个值,然后完成。

      【讨论】:

      • 认为您缺少) :)
      • 当源 observable 从不发出值时会发生什么,这是否意味着 Subscription 停留在那里并可能造成内存泄漏?
      • @Gagan 是的,它会造成内存泄漏。
      • 那么这种情况下如何添加退订呢?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-26
      • 2020-10-28
      • 2017-08-24
      • 2021-11-18
      • 1970-01-01
      • 2016-07-07
      • 2018-07-29
      相关资源
      最近更新 更多