[英]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.