forkjoin 和 combineLatest rxjs 之间的区别

苏尼尔·加格

两者都用于连接多个流。

由此我对两者感到困惑,我读了 combineLatest 在同步模式下进行调用和 forkJoin 并行调用,

我正在尝试这个

combineLatest([
      of(null).pipe(delay(5000)),
      of(null).pipe(delay(5000)),
      of(null).pipe(delay(5000))
    ]).subscribe(() => console.log(new Date().getTime() - start));

forkJoin([
      of(null).pipe(delay(5000)),
      of(null).pipe(delay(5000)),
      of(null).pipe(delay(5000))
    ]).subscribe(() => console.log(new Date().getTime() - start));

那个打印

5004
5014

每次结果大约为 5 秒,如果 combineLatest 按顺序发送请求,那么为什么打印持续时间大约为 5 秒。

这是正确的还是有任何其他区别,任何示例代码?

马丁

两者都并行订阅所有源 Observable,它们是否异步仅取决于每个源 Observable。

因此,在此用例中,您将获得相同的结果。如果您concat()改为使用,您会看到不同之处,因为concat()一个接一个地订阅源。

forkJoin之间的区别在于当所有源 Observable 至少发射一个项目时combineLatest,它forkJoin只会发射一次,而在源 Observable 至少combineLatest发射一次后,每次发射都会发射一次。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章