高阶映射

RxJS exhaustMap

当前 inner 未完成时忽略新 source,适合防止重复提交。

exhaustMap(() => submitRequest())

时间线如何变化

  1. 1
    A 开始提交

    exhaustMap 锁定当前 inner。

  2. 2
    B 被忽略

    A 尚未完成,不会创建新的请求。

  3. 3
    C 也被忽略

    连续点击不会造成重复提交。

  4. 4
    A 完成

    现在可以接受新的 source 值。

  5. 5
    D 成功提交

    D 在空闲期到来,因此被处理。

受支持的示例代码

实验室只根据下列示例中的关键操作符生成预设时间线,不执行任意输入代码。

import { fromEvent, exhaustMap } from 'rxjs'

const submit$ = fromEvent(button, 'click').pipe(
  exhaustMap(() => submitRequest())
)

submit$.subscribe(showSuccess)