如何在Angular应用中subscribe()
之后取消请求?
和往常一样,我使用unsubscribe()
或takeUntil()
取消我的请求like this。
但是我不知道为什么在这种情况下它不起作用:
userSubscription$: Subscription;
loadUser(userId: number) {
// Cancel request
if(this.userSubscription$) { this.userSubscription$.unsubscribe(); }
// Load user
this.userSubscription$ = this.userService.getUser(userId).subscribe((user: User) => {
// ...
});
}
使用HTTP的getUser可以使用:
getUser() {
const url = '...';
return this.http.get(url)
}
我尝试了正常的解决方案,但它只取消了Observable
(这意味着它在加载后没有执行任何操作,但请求仍在加载=>使我的网站运行缓慢)。
知道为什么会这样吗?
有关更多信息,我正在使用:
- 角度4.0.0
- 使用HttpModule发送请求(不是HttpClientModule)
感谢您的帮助!
答案 0 :(得分:0)
一旦HTTP请求返回了响应,并且您想取消订阅,最好的方法是使用take运算符,请尝试以下操作:
COB.COB_FA < CURRENT TIMESTAMP - interval '30' day or
COB.COB_FA > CURRENT TIMESTAMP + '30' day
根据您的角度版本从rxjs导入take运算符。