Отменить http-запрос

В jQuery ajax есть способ прервать запросы ajax:

var xhr = $.ajax({ ... });

когда пользователь хочет прервать операцию или переходит на другую страницу в одностраничном приложении, я могу позвонить

xhr.abort();

В angular2-http api я не могу найти возможность прервать запрос, поскольку он использует rxjs.

Есть ли способ прервать запрос ajax в angular2?


person Dániel Kis    schedule 15.03.2016    source источник
comment
Возможный дубликат Как отменить подписку в Angular2   -  person Günter Zöchbauer    schedule 21.03.2016


Ответы (2)


Когда вы подписываетесь, вы получаете подписку, которую вы можете использовать, чтобы отписаться

this.httpSubscription = this.http.get(...).subscribe(...);
...
this.httpSubscription.unsubscribe();
person Günter Zöchbauer    schedule 21.03.2016

Для простого решения вы можете использовать следующее, но вы также можете использовать метод .switchMap rxjs.

if ( this.subscription ) {
   this.subscription.unsubscribe();
}
this.subscription = this.http.get( 'awesomeApi' )
 .subscribe((res)=> {
  // your awesome code..
})
person Ervin Llojku    schedule 20.10.2016
comment
что, если вызовы API находятся в цикле this.http.get( 'awesomeApi' ) .subscribe((res)=› { // ваш замечательный код.. }) - person indra257; 24.05.2017
comment
отслеживание последней подписки (вызов API) .. if (особое условие) {цикл уничтожения и отмена подписки на последнюю подписку} пожалуйста, предоставьте больше кода, если вам нужна помощь - person Ervin Llojku; 25.05.2017