【问题标题】:RxJS combineLatest from same source来自同一来源的 RxJS combineLatest
【发布时间】:2018-08-08 16:52:19
【问题描述】:
const s$ = new Rx.Observable.interval(100).take(4);

const s1$ = s$.map(v => 's1:' + v);
const s2$ = s$.map(v => 's2:' + v);

Rx.Observable.combineLatest(s1$, s2$)
  .subscribe((value) => {
    console.log(value);
  })

我想得到这样的输出:

s1: 1, s2: 1
s1: 2, s2: 2
s1: 3, s2: 3

但实际输出:

"s1:0,s2:0"

"s1:1,s2:0"

"s1:1,s2:1"

"s1:2,s2:1"

"s1:2,s2:2"

"s1:3,s2:2"

"s1:3,s2:3"

我该怎么做?

【问题讨论】:

  • 可能zip 是您应该使用的运算符,而不是combine latest。那么你从 0 而不是从 1 开始的脂肪是interval 工作方式的本质。如果你想从 1 开始,那么要么skip 第一次发射,要么map 加 1。
  • 谢谢老兄!你让我开心

标签: rxjs


【解决方案1】:

改用 zip 运算符:

Rx.Observable.zip(s1$, s2$)
  .subscribe((value) => {
  console.log(value);
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多