RxJS exhaustMap
当前 inner 未完成时忽略新 source,适合防止重复提交。
exhaustMap(() => submitRequest())时间线如何变化
- 1A 开始提交
exhaustMap 锁定当前 inner。
- 2B 被忽略
A 尚未完成,不会创建新的请求。
- 3C 也被忽略
连续点击不会造成重复提交。
- 4A 完成
现在可以接受新的 source 值。
- 5D 成功提交
D 在空闲期到来,因此被处理。
受支持的示例代码
实验室只根据下列示例中的关键操作符生成预设时间线,不执行任意输入代码。
import { fromEvent, exhaustMap } from 'rxjs'
const submit$ = fromEvent(button, 'click').pipe(
exhaustMap(() => submitRequest())
)
submit$.subscribe(showSuccess)