gpt4 book ai didi

Angular + RxJS : repeat the request on status code 202

转载 作者:太空狗 更新时间:2023-10-29 17:34:44 26 4
gpt4 key购买 nike

我有一个简单的请求,如果响应状态为 202,我想重复该请求。目前,它看起来像这样:

this.http.get(endPoint, {
withCredentials: true,
headers: this.headers
})
.map((response: Response) => {
return response.text() ? response.json() : '';
})
.catch((error) => this.handleError(error));

我已经尝试使用 .repeatWhen() 但不幸的是,我没有收到 Response 对象,而且我无法通过状态代码设置验证。

我该怎么做?

最佳答案

这是对 repeatWhen() 工作原理的误解。对该操作符的回调接收一个参数,该参数是一个 Observable,它在源完成时推送一个空项。所以这对您来说并不理想(因为您无权访问所需的 Response 对象)。

您可以改用 retryWhen():

this.http.get(endPoint, { withCredentials: true, headers: this.headers })
.map((response: Response) => {
if (response.code === 202) {
throw response;
}
return response;
})
.map((response: Response) => {
return response.text() ? response.json() : '';
})
.retryWhen(obs => {
return obs; // always just resubscribe without any further logic
});

这会将 response 作为错误抛出,然后由刚刚重新订阅的 retryWhen 捕获。如果您重新订阅,您当然可以使用更多逻辑来控制,例如:

.retryWhen(obs => {
return obs.filter(...);
});

关于 Angular + RxJS : repeat the request on status code 202,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45543909/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com