forkjoin 和 combineLatest rxjs 的区别
difference between forkjoin and 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
和 combineLatest
之间的区别是 forkJoin
只会在所有源 Observable 至少发射一个项目并完成时发射一次,而 combineLatest
会发射每任何源 Observables 在它们至少发射一次后发射的时间。
两者都用于加入多个流。
我正在尝试这个
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
和 combineLatest
之间的区别是 forkJoin
只会在所有源 Observable 至少发射一个项目并完成时发射一次,而 combineLatest
会发射每任何源 Observables 在它们至少发射一次后发射的时间。