Отменить http-запрос с Angular 4 - PullRequest
0 голосов
/ 11 октября 2018

Как я могу на самом деле отменить запрос после subscribe() в приложении Angular ???

Как обычно, я использую 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) => {
     // ...
  });
}

И getUser в обслуживании с Http:

getUser() {
  const url = '...';
  return this.http.get(url)
}

Я пытался с нормальными решениями, ноон только отменяет Observable (означает, что он ничего не делал после загрузки, но запросы все еще загружаются => Сделать мой сайт медленным).

Есть идеи, почему это происходит?

Для получения дополнительной информации я использую:

  • Angular 4.0.0
  • Использование HttpModule для отправки запроса (не HttpClientModule)

Спасибо за помощь!

1 Ответ

0 голосов
/ 11 октября 2018

Как только HTTP-запрос вернул вам ответ, и вы хотите отписаться, лучше всего использовать оператор take, попробуйте следующее:

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

Импортируйте оператор take из rxjs в зависимости от вашей угловой версии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...