首页 > 解决方案 > Angular Rxjs repeatWhen:当所有状态都未完成时

问题描述

我想重试(点击相同的 URL 最多 5 次,延迟 5 秒)如果我没有收到相同的 URL,Angular 服务文件中的所有状态都是“已完成”

[  
  {  
    "data": [   
      //SET OF OBJECTS  
    ],  
    "status": "COMPLETED"  
  },
  {  
    "data": [  
    //SET OF OBJECTS  
    ],  
    "status": "NO_DATA_FOUND"  
  }  
]```

标签: angularrxjs

解决方案


尝试这个

this.http.get().pipe(
  map(res => {
   res.array.forEach(el => {
    if (el.status !== "completed") {
      //error will be catched by retryWhen
      throw res;
    }     
   })
   return res;
  }),
  retry(5),
  retryWhen(errors => errors.pipe(delay(1000)))
)

推荐阅读