我有服务
export class FreteService {
constructor(private http: HttpClient,
private router: Router) { }
recuperarFrete(dados_entrega: DadosEntrega): any{
return this.http.post<DadosEntrega>(AppSettings.API_ENDPOINT + 'entrega/calcular-frete', dados_entrega, {observe: 'response'});
}
}
它在组件ngOnInit上被调用
ngOnInit() {
this.freteService.recuperarFrete(dados_entrega)
}
如果我导航到另一个组件,则对另一个组件的http请求将待处理,直到该请求完成为止。我注意到它是因为端点大约需要50秒才能返回结果。 http请求不应该是异步的吗?
答案 0 :(得分:0)
我认为,销毁组件时,浏览器应取消第一个请求。我怀疑所提供的代码有问题,它缺少在OnDestroy中取消订阅的调用。您可能必须添加ngOnDestroy并从那里调用退订。这应该取消销毁组件时正在进行的请求。
class MyComponent implements onDestroy {
private subscription: Subscription = Subscription.EMPTY;
ngOnInit() {
this.subscription = this.freteService.recuperarFrete(dados_entrega);
}
ngOnDestroy() {
this.subscription.unsubscribe();
}
}