高阶映射

RxJS switchMap

新 inner 到来时取消旧 inner,只保留最近一次结果。

switchMap(query => request(query))

时间线如何变化

  1. 1
    查询 a

    switchMap 订阅第一个请求。

  2. 2
    查询 ab 到来

    旧请求 a 尚未完成,因此被取消。

  3. 3
    ab 返回

    当前最新请求的结果可以输出。

  4. 4
    查询 abc

    再次切换到新的 inner。

  5. 5
    abc 返回

    输出永远只接收最新查询的结果。

受支持的示例代码

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

import { switchMap } from 'rxjs'

const result$ = query$.pipe(
  switchMap(query => searchRequest(query))
)

result$.subscribe(renderResult)