You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RxJS combineLatest操作符在多Observable同时发射值时的工作机制

关于RxJS combineLatest 在同时发射场景下的工作机制

首先明确combineLatest的核心行为:

每当任意一个输入Observable发射新值时,就会立即将所有输入Observable的当前最新值组合后发射出去。

你的示例场景拆解

你的代码中:

  • a$ 会在 0s、1s、2s、3s、4s 分别发射 0、1、2、3、4(共5次)
  • b$ 会在 0s、4s、8s、12s、16s 分别发射 0、1、2、3、4(共5次)

4秒时的输出逻辑

在4秒这个时间点,a$ 和 b$ 都会发射新值,但它们的发射是按顺序执行的(即使时间差极小):

  1. 首先a$发射4:此时b$的最新值还是之前的0,所以combineLatest会立即组合出[4, 0]并输出。
  2. 紧接着b$发射1:此时a$的最新值已经更新为4,所以combineLatest会再次组合出[4, 1]并输出。

这就是为什么你会看到两个连续输出——combineLatest对每个输入Observable的每一次发射都会响应,而不是等待所有输入都完成一轮发射后才输出一次最新组合。

补充验证

如果调整b$的发射时间比a$晚几毫秒(比如timer(4001, 4000)),你会看到4秒时先输出[4, 0],1毫秒后输出[4, 1],逻辑完全一致。

内容的提问来源于stack exchange,提问作者mprakhar1705

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 12:55:12