高阶映射

RxJS concatMap

前一个 inner 完成后才订阅下一个,严格保持顺序。

concatMap(value => request(value))

时间线如何变化

  1. 1
    开始请求 A

    B、C 虽已到达,但先进入队列。

  2. 2
    A 完成

    现在才订阅 B 对应的 inner Observable。

  3. 3
    B 完成

    继续处理排队的 C。

  4. 4
    C 完成

    输出顺序稳定为 A、B、C。

受支持的示例代码

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

import { from, concatMap } from 'rxjs'

const saved$ = from(['A', 'B', 'C']).pipe(
  concatMap(value => saveRequest(value))
)

saved$.subscribe(renderSaved)