【问题标题】:RXJS combineLatest/zip questionsRXJS 结合最新/压缩问题
【发布时间】:2017-04-28 07:21:26
【问题描述】:

我想得到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>

【问题讨论】:

    标签: javascript rxjs


    【解决方案1】:

    那是因为Rx.Observable.of() 创建了一个空的 observable。 combineLatestzip 都会在它们都有值时触发。这就是为什么它永远不会触发。 Rx.Observable.of('') 会起作用。

    【讨论】:

      猜你喜欢
      • 2020-08-19
      • 2017-09-23
      • 2017-01-02
      • 2017-01-22
      • 1970-01-01
      • 1970-01-01
      • 2012-09-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多