Javascript RxJS组合最混乱

Javascript RxJS组合最混乱,javascript,reactive-programming,rxjs5,Javascript,Reactive Programming,Rxjs5,我以为我理解CombineRelatest,但考虑到我的输出,我不理解它。我认为,使用CombineTest时,所有的可观测值都会在任何可观测值发出时发出最后的值 (注意:我只是做了(5)步来限制我的控制台输出) 因此,给出这个小例子- const int1$ = Rx.Observable.interval(1000).take(5) const int2$ = Rx.Observable.interval(500).take(5) const int3$ = Rx.Observable.in

我以为我理解CombineRelatest,但考虑到我的输出,我不理解它。我认为,使用CombineTest时,所有的可观测值都会在任何可观测值发出时发出最后的值

(注意:我只是做了(5)步来限制我的控制台输出)

因此,给出这个小例子-

const int1$ = Rx.Observable.interval(1000).take(5)
const int2$ = Rx.Observable.interval(500).take(5)
const int3$ = Rx.Observable.interval(3000).take(5)
const all$ = Rx.Observable.combineLatest(
  int1$, int2$, int3$ 
)

all$.subscribe(latestValues => {
  const [int1, int2, int3] = latestValues;
  console.log(`
      interval one @ 1000 ${int1},
      interval two @ 500 ${int2},
      interval three @ 3000 ${int3}
  `)
})
我想看看

"
      interval one @ 1000 0,
      interval two @ 500 1,
      interval three @ 3000 0
  "
"
      interval one @ 1000 1,
      interval two @ 500 2,
      interval three @ 3000 0
  "
"
      interval one @ 1000 1,
      interval two @ 500 3,
      interval three @ 3000 1
  "
"
      interval one @ 1000 2,
      interval two @ 500 4,
      interval three @ 3000 1
但是我越来越

"
      interval one @ 1000 2,
      interval two @ 500 4,
      interval three @ 3000 0
  "
"
      interval one @ 1000 3,
      interval two @ 500 4,
      interval three @ 3000 0
  "
"
      interval one @ 1000 4,
      interval two @ 500 4,
      interval three @ 3000 0
  "
"
      interval one @ 1000 4,
      interval two @ 500 4,
      interval three @ 3000 1
有点困惑。你关于为什么我没有看到我所期望的东西的想法会很棒

每当任何源观测值发射项目时,CombineTest发射项目


(只要每个源观测值至少发射了一项)您有jsbin吗?将有助于玩(只要每个源观测值至少发射了一个项目)
const int1$ = Rx.Observable.timer(0,1000).take(5)
const int2$ = Rx.Observable.timer(0,500).take(5)
const int3$ = Rx.Observable.timer(0,3000).take(5)
const all$ = Rx.Observable.combineLatest(
  int1$, int2$, int3$ 
)

all$.subscribe(latestValues => {
  const [int1, int2, int3] = latestValues;
  console.log(`
      interval one @ 1000 ${int1},
      interval two @ 500 ${int2},
      interval three @ 3000 ${int3}
  `)
})