高阶映射

RxJS mergeMap

同时订阅多个 inner,完成顺序由各自耗时决定。

mergeMap(value => request(value))

时间线如何变化

  1. 1
    订阅 slow

    第一个 inner 开始执行。

  2. 2
    并发订阅 fast

    无需等待 slow 完成。

  3. 3
    fast 最先返回

    mergeMap 按完成时间输出。

  4. 4
    mid 第二个返回

    多个 inner 可以同时活跃。

  5. 5
    slow 最后返回

    输出顺序可能与 source 顺序不同。

受支持的示例代码

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

import { from, mergeMap } from 'rxjs'

const loaded$ = from(['slow', 'fast', 'mid']).pipe(
  mergeMap(key => loadRequest(key))
)

loaded$.subscribe(renderResult)