angular - 防止 Observable 在服务器关闭时重试

标签 angular rxjs observable

在下面的代码片段中,我使用 httpClient 从端点获取用户列表, 在一个完美的世界中,应用程序发送一个 http 请求并获取用户列表, 但是当服务器返回 4xx5xx 错误时,应用程序会在 10 毫秒后重试并不断向服务器发送数千个 http 请求。

this.http.get<User[]>(SERVER_API_URL + '/api/not_found')
    .subscribe(
        value => console.log('subscribe.next'),
        err => console.log('subscribe.error'),
        () => console.log('subscribe.done')
    );

如何阻止应用程序重试。

我尝试将 Observable 转换为 Promise 但我得到了相同的结果。

  • "@angular/core": "6.0.0"
  • "@angular/http": "6.0.5"
  • "rxjs": "6.2.1"

最佳答案

重试方法可以自动重新订阅失败的 Observable 指定次数。重新订阅 HttpClient 方法调用的结果具有重新发出 HTTP 请求的效果。

this.http.get<User[]>(SERVER_API_URL + '/api/not_found')
        .pipe(
          retry(0), // retry a failed request up to 0 times
          catchError(this.handleError) // then handle the error
        ).subscribe(...);
    }

引用:https://angular.io/guide/http

关于angular - 防止 Observable 在服务器关闭时重试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50897739/

相关文章:

javascript - 升级到 Angular 10 后无法读取未定义的属性 '0' 中的错误

angular - 如何对 combineLatest 中的每个函数进行单独的错误处理?

javascript - 在 Rxjs 中如何暂停一个数据流并从第二个继续它被暂停了?

javascript - 做(点击)与订阅

javascript - 如何中止来自 Observable 的 Ajax 请求?

angular - 如何从主题中获取最后一个值?

javascript - Angular : Group By by property name and show only one if duplicate

angular - *ngFor 应该在模板内部使用,还是应该在外部使用?

angular - 从 Angular 到 React - 如何将业务逻辑与组件解耦?

angular - 在路由解析器中调用嵌套的 http 返回 Observable 而不是数据