javascript - RXJS mixLatest/zip 问题

标签 javascript rxjs

我想获取console.log结果:["abc", 122, 123],zip/combineLatest操作一般可以满足我的需求。

但是,当 time 或 time2 没有任何值时,例如: 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>

最佳答案

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

关于javascript - RXJS mixLatest/zip 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43674334/

相关文章:

javascript - ReactiveX:从 observable 中过滤掉数字,使总数永远不会低于零

rxjs - 如何在 rxjs 中每 5 次调用后进行延迟?

javascript - 如何从服务器获取数据?使用区间运算符

angular - 如果满足特定条件,RXJS 停止 Observable 链的传播

javascript - 如何在 Firebase 中使用电子邮件和电话进行身份验证?

javascript - 如何等待 api 的数据加载,然后在 UI 中执行另一个操作?

javascript - 弄清楚为什么 Date.parse() 不等于比较日期

javascript - 以编程方式编译模板并附加到元素

javascript - 在浏览器窗口调整大小时切换滑出可见性

javascript - JQuery:使用加号和减号图标切换问答类