在Angular 7中,可以使用RxJS的takeUntil操作符来取消正在进行中的HTTP请求。
首先,创建一个Subject对象以充当取消订阅的标记:
private unsubscribe$ = new Subject();
在组件的ngOnInit方法中,使用takeUntil操作符来订阅HTTP请求:
import { takeUntil } from 'rxjs/operators';
ngOnInit(): void {
this.http.get('your-api-url')
.pipe(takeUntil(this.unsubscribe$))
.subscribe(response => {
// 处理HTTP响应
});
}
在组件的ngOnDestroy方法中,调用unsubscribe$的next方法来通知所有订阅该Subject的订阅者取消订阅:
ngOnDestroy(): void {
this.unsubscribe$.next();
this.unsubscribe$.complete();
}
这样,当组件被销毁时,HTTP请求的订阅也会被取消,防止内存泄漏。
请注意,上述代码是基于Angular的HttpClient模块。如果你使用其他的HTTP库,例如axios或fetch,你需要根据该库的取消请求的方法来取消HTTP请求。