Sun*_*arg 2 fork-join observable rxjs combinelatest
两者都用于连接多个流。
由此 我对两者感到困惑,我读了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));
Run Code Online (Sandbox Code Playgroud)
打印
5004
5014
Run Code Online (Sandbox Code Playgroud)
每次结果约为5秒,如果combineLatest按顺序发送请求,那么为什么它打印持续时间约为5秒。
这是正确的还是有其他区别,有示例代码吗?
两者并行订阅所有源 Observable,并且它们是否异步仅取决于每个源 Observable。
因此,在这个用例中,您将得到相同的结果。如果您concat()改为使用,您会看到差异,因为concat()按顺序订阅源一个接一个。
forkJoin和之间的区别combineLatest在于,forkJoin当所有源 Observable 发出至少一项时,只会发出一次,而完成 whilecombineLatest会在任何源 Observable 至少发出一次后每次发出时发出一次。
| 归档时间: |
|
| 查看次数: |
5736 次 |
| 最近记录: |