javascript - 取消订阅 AsyncSubject?

标签 javascript rxjs

我正在使用 AsyncSubject 等待来自后端的一些配置,但我已经知道配置应该应用到的数据。我想在此 AsyncSubject 上使用订阅作为实际处理之前的延迟。 在这种情况下我需要取消订阅吗?

https://rxviz.com/v/WJxG0RqO

const { AsyncSubject } = Rx
const { map } = RxOperators

class Smth {
  constructor(options$) {
    this.options$ = options$
    this.sum = 0
  }

  append(val) {
    this.options$.subscribe(opts => {
      this.sum += parseInt(val, opts.base)
      // Do I need to unsubscribe from AsyncSubject?
    })
  }

  compute() {
    return this.options$.pipe(
      map(() => this.sum)
    )
  }
}

function run() {
  var opts$ = new AsyncSubject()
  setTimeout(() => { // Opts will be provided later - emulate fetch request
    opts$.next({ base: 7 })
    opts$.complete()
  }, 1000)

  var smth = new Smth(opts$)
  smth.append("15") // But the arguments are already known
  smth.append("5")
  smth.append("66")
  smth.append("0")

  return smth.compute()
}

run()

最佳答案

如果您确定订阅的可观察对象已完成,则不必取消订阅:在这种情况下它将自动取消订阅

关于javascript - 取消订阅 AsyncSubject?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57999408/

相关文章:

javascript - Highcharts map 附加不需要的数据

javascript - 如何从动态创建的输入中更新总和?

angular - 多次调用包含订阅的方法,我应该每次都取消订阅旧订阅吗?

node.js - 如何将 AsyncLocalStorage 用于 Observable?

javascript - 通过 Angular 观察防止频繁点击同一按钮

javascript - jQuery 不工作 - 'jQuery was used before it was defined'

javascript - 提交可变数量的数组以强调 _.difference

javascript - 对于不同的编码,相当于 JavaScript 中 Java 的 getBytes

javascript - 编译后的 Javascript 无法在生产模式下工作

javascript - Angular:将 Observable 传递给另一个服务