使用 combineLatest 和 forkJoin 合并并行流
1. 异步流协调的挑战
在构建异步流时,由于无法保证数据到达时间的各种可能排列,这使得协调工作变得困难。例如,使用浏览器的多个连接可以并行获取部分数据,但当数据存在因果关系时,就需要串行获取。以下是几种常见的实现方式及其问题:
- 回调方式 :
button.addEventListener('click', () => {
let result1, result2 = {};
ajax('/source1', data => {
result1 = data;
});
ajax('/source2', data => {
result2 = data;
});
setTimeout(() => {
processResults(result1, result2);
}, arbitraryWaitTimeMs);
});
这种方式很难预测两个 AJAX 调用所需的时间,等待和合并结果也很困难,还可能导致浏览器认为脚本无响应。
- 嵌套回调方式 :
button.addEventListener('click', () => {
ajax('/source1', result1 => {
combineLatest与forkJoin合并并行流
超级会员免费看
订阅专栏 解锁全文
1748

被折叠的 条评论
为什么被折叠?



