【问题标题】:Why the operator forkJoin does not work?为什么运算符 forkJoin 不起作用?
【发布时间】:2018-07-21 11:24:50
【问题描述】:

我正在尝试添加两个 observable。但是控制台什么也没显示。

var s = Rx.Observable.of(100, 200, 300);
var s1 = Rx.Observable.interval(1000);

var sub = Rx.Observable.forkJoin(s, s1)

sub.subscribe(x => console.log(x));

live example here

对于两个同步 observables 的情况没有问题

【问题讨论】:

标签: javascript rxjs


【解决方案1】:

forkJoin 仅在其所有源 Observable 发出至少一项且全部完成时才会发出。使用Observable.of 很好。它发出所有值并立即完成。但是Observable.interval 永远不会自行完成(例如,您可能希望将其与take(N) 链接起来。

var s1 = Rx.Observable.interval(1000).take(1);
// Now both source Observables complete so `forkJoin` will complete as well
var sub = Rx.Observable.forkJoin(s, s1);

【讨论】:

    【解决方案2】:

    如果你在官方文档中查找forkJoin() function,你会看到:

    forkJoin 将等待所有传递的 Observables 完成,然后它会发出一个数组,其中包含来自相应 Observables 的最后一个值。

    如果你看interval() function

    interval 返回一个 Observable,它发出无限的递增整数序列 ....

    所以你的 forkJoin 工作正常,它永远不会console.log() 任何东西,因为间隔函数没有结束。

    【讨论】:

      猜你喜欢
      • 2015-07-06
      • 1970-01-01
      • 2018-09-20
      • 2017-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多