错误与共享

RxJS retry + finalize

失败时重新订阅 source,最终完成或失败后统一执行清理。

retry(2) → finalize(cleanup)

时间线如何变化

  1. 1
    第一次订阅

    请求开始执行。

  2. 2
    第一次失败

    retry 重新订阅原 source。

  3. 3
    第二次失败

    还有一次重试机会。

  4. 4
    第三次成功

    数据进入输出流。

  5. 5
    执行 finalize

    无论 complete、error 或取消订阅都统一清理。

受支持的示例代码

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

import { retry, finalize } from 'rxjs'

request$.pipe(
  retry(2),
  finalize(() => hideLoading())
).subscribe({
  next: render,
  error: showError
})