首页 > 解决方案 > 防止 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为 aPromise但我得到了相同的结果。

标签: angularrxjsobservable

解决方案


有 retry 方法可以自动重新订阅失败的 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


推荐阅读