使用Angular 4取消http请求

时间:2018-10-11 10:17:00

标签: angular http rxjs

如何在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)
  •   

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

一旦HTTP请求返回了响应,并且您想取消订阅,最好的方法是使用take运算符,请尝试以下操作:

COB.COB_FA < CURRENT TIMESTAMP - interval '30' day or
COB.COB_FA  > CURRENT TIMESTAMP + '30' day

根据您的角度版本从rxjs导入take运算符。