RxJS retry + finalize
失败时重新订阅 source,最终完成或失败后统一执行清理。
retry(2) → finalize(cleanup)时间线如何变化
- 1第一次订阅
请求开始执行。
- 2第一次失败
retry 重新订阅原 source。
- 3第二次失败
还有一次重试机会。
- 4第三次成功
数据进入输出流。
- 5执行 finalize
无论 complete、error 或取消订阅都统一清理。
受支持的示例代码
实验室只根据下列示例中的关键操作符生成预设时间线,不执行任意输入代码。
import { retry, finalize } from 'rxjs'
request$.pipe(
retry(2),
finalize(() => hideLoading())
).subscribe({
next: render,
error: showError
})