首页 > 解决方案 > 如何使用新参数 retryWhen 函数?角 9

问题描述

授权错误时如何在请求中设置新参数

myFunc(param): Observable<Visit[]> {
   
    return this.http.get(this.url?session='+param
      ).pipe(map(data => {
            let visitsList = data['visits_grid']
            return visitsList.map(function(visit:any) {
                return {name: visit.client_facility, date: visit.date_start, hash: visit.hash}
        })
    }),
    retryWhen(error => error.pipe(delay(500), take(3))))
}

标签: angularionic-frameworkrxjs

解决方案


尝试有两个功能并使用switchMap

import { switchMap } from 'rxjs/operators';
....
myFunc(param): Observable<Visit[]> {
  return this.makeApiCall().pipe(
    retryWhen(error => error.pipe(
                                   delay(500), 
                                   take(3), 
                                   switchMap(_ => this.makeApiCall({}))), // new param 
  );
}
private makeApiCall(param) {
   return this.http.get(this.url?session='+param
      ).pipe(map(data => {
            let visitsList = data['visits_grid']
            return visitsList.map(function(visit:any) {
                return {name: visit.client_facility, date: visit.date_start, hash: visit.hash}
        })
    }));
}

推荐阅读