簡體   English   中英

使用Angular 4取消http請求

[英]Cancel http request with Angular 4

在Angular應用程序中subscription subscribe()之后,如何才能實際取消請求?

和往常一樣,我使用unsubscribe()takeUntil()取消這樣的請求。

但我不知道為什么在這種情況下不起作用:

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)

感謝您的幫助!

HTTP請求返回響應后,您想取消訂閱的最佳方法是使用take運算符,請嘗試以下操作:

this.userService.getUser(userId).take(1) subscribe((user: User) => {
     // ...
  });

根據您的角度版本從rxjs導入take運算符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM