RXJS结合最新/拉链问题

时间:2017-04-28 07:21:27

标签: javascript rxjs

I want to get the console.log result is `["abc", 122, 123]`,the operation zip/combineLatest fit for my needs.

但是当时间或时间2没有任何值时,例如: var time = Rx.Observable.of();,然后console.log结果不是["abc", 122, 123]。 那怎么解决呢?

在这里输入代码

var time = Rx.Observable.of(['abc']);
var time2= Rx.Observable.of([122,123]);
Rx.Observable.zip(time,time2
                 , (a, b) => [...a, ...b])
  .subscribe(data => console.log("data:",data));
Rx.Observable.merge(time,time2).subscribe(data => {
  console.log("data-M:",data);
})
Rx.Observable.combineLatest(time,time2
                 , (a,b) => {return a.concat(b)})
  .subscribe(data => console.log("data:",data));
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
<script src="https://unpkg.com/@reactivex/rxjs@5.0.3/dist/global/Rx.js"></script>

</body>
</html>

`

1 个答案:

答案 0 :(得分:1)

这是因为Rx.Observable.of()创建了一个空的observable。当combineLatestzip都有值时,它们都会触发。这就是它永远不会发火的原因。 Rx.Observable.of('')可以使用。