两者都用于连接多个流。
由此我对两者感到困惑,我读了 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] 删除。
我来说两句