AngularNGRXEffect:Retryifconditionismet
创始人
2024-10-28 18:00:32
0

我们可以使用RxJS的retryWhen操作符在ngrx effect中实现根据条件进行重试。

首先在我们的effect中定义一个Observable,当满足条件时该Observable会返回true。在调用http请求之前,我们可以使用RxJS的takeWhile操作符过滤掉Observable中不满足条件的值。如果takeWhile返回false,我们会在retryWhen中尝试重试 effect。

下面是实现过程的代码示例:

import { Injectable } from '@angular/core';
import { Actions, createEffect, ofType } from '@ngrx/effects';
import { catchError, map, mergeMap, retryWhen, takeWhile } from 'rxjs/operators';
import { of, timer } from 'rxjs';
 
@Injectable()
export class MyEffect {
 
  loadMyData$ = createEffect(() =>
    this.actions$.pipe(
      ofType('[MyComponent] Load My Data'),
      mergeMap(() =>
        this.myService.getData().pipe(
          takeWhile(result => !result.finished), // condition for retrying
          map(response => ({ type: '[MyComponent] Load My Data Success', payload: response })),
          catchError(error => of({ type: '[MyComponent] Load My Data Failure', error }))
        )
      ),
      retryWhen(errors =>
        errors.pipe(
          mergeMap(error => {
            if (error.status === 404) { // If error status is 404, retry after 5 seconds
              return timer(5000);
            } else if (error.status === 500) { // If error status is 500, retry after 10 seconds
              return timer(10000);
            } else {
              return of(error); // Throw the error
            }
          })
        )
      )
    )
  );
 
  constructor(
    private actions$: Actions,
    private myService: MyService
  ) {}
}

在此示例中,我们定义了一个条件为“! result.finished”的takeWhile操作符,以确保在满足此条件之前不会重试 effect。在retryWhen操作符中,我们为两种HTTP错误状态码(404和500)设置了不同的重试时间。

这个解决方

相关内容

热门资讯

wepoke ai辅助!wep... wepoke ai辅助!wepoke可以使用模拟器,wepok软件透明挂,攻略教程(有挂技巧)1、点...
wepoke辅助挂!wepok... wepoke辅助挂!wepoke有插件,wepOkE总是真的有挂,科技教程(有挂细节);玩家必备必赢...
玩家攻略推荐!天天斗牌大联盟麻... 玩家攻略推荐!天天斗牌大联盟麻将(透明挂)好像真的有挂(2021已更新)(哔哩哔哩)1、构建自己的天...
微扑克有辅助挂!微扑克大厅都是... 微扑克有辅助挂!微扑克大厅都是机器人,德州扑克微扑克俱乐部,系统教程(有挂机密)是一款可以让一直输的...
wepokeai机器人!wep... 这是一款非常优秀的WepOke ia辅助检测软件,能够让你了解到WepOke中牌率当中全部隐藏参数,...
揭秘一下!科乐麻将系统规律(透... 揭秘一下!科乐麻将系统规律(透视)原来是有挂(2026已更新)(哔哩哔哩)1、科乐麻将系统规律系统规...
微扑克有辅助挂!微扑克有后台控... 微扑克有辅助挂!微扑克有后台控制(透明挂)原来真的是有挂1、超多福利:超高返利,海量正版游戏,微扑克...
WePoKe外 挂!wopok... 1、WePoKe外 挂!wopoker有外 挂(透明挂)wEpOke(就是真的有挂);该软件可以轻松...
程序员教你!欢乐划水麻将是不是... 程序员教你!欢乐划水麻将是不是有猫腻(透视辅助)都是有挂(2024已更新)(哔哩哔哩)1、点击下载安...
微扑克系统发牌规律!微扑克有计... 1、微扑克系统发牌规律!微扑克有计算器,微扑克ai软件(确实真的有挂);代表性(透视辅助软件透明挂)...