gpt4 book ai didi

Angular:如何知道请求是否已在 HttpClient 中取消

转载 作者:太空狗 更新时间:2023-10-29 17:49:45 25 4
gpt4 key购买 nike

要知道请求是否已完成,我执行 if (httpEvent instanceof HttpResponse)。同样,如何知道 HttpInterceptor 中的请求是否被取消?下面是我的拦截函数。

intercept(httpRequest: HttpRequest<any>, httpHandler: HttpHandler): Observable<HttpEvent<any>> {
this.requestsPending++;

if (this.typeAheads.includes(httpRequest.url.split('/').pop()))
this.slimLoadingBarService.start();
else
this.flsLoaderService.start();

return httpHandler.handle(httpRequest)
.do((httpEvent: HttpEvent<any>) => {
if (httpEvent instanceof HttpResponse) {
// decrementing counter on each request return
this.requestsPending--;

if (this.typeAheads.includes(httpEvent.url.split('/').pop())) {
if (this.requestsPending === 0)
this.slimLoadingBarService.complete();
}
else {
if (this.requestsPending === 0)
this.flsLoaderService.stop();
}
}
}, () => {
this.slimLoadingBarService.complete();

// reset counter on error
this.requestsPending = 0;
this.flsLoaderService.stop();
});
}

最佳答案

我也遇到过这个问题,这是我最近找到的解决方案:

要知道请求是否被取消,您可以使用 finally 运算符,示例如下:

let cancelled = true;
return next.handle(request).do(
undefined,
() => {
// error
cancelled = false;
},
() => {
// completed
cancelled = false;
},
).finally(
() => {
if (cancelled) {
// do things
}
},
);

关于Angular:如何知道请求是否已在 HttpClient 中取消,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47218216/

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