Angular: прервать POST-запрос

XMLHttpRequest.abort() прерывает уже отправленный запрос. Как я могу добиться этого в Angular, желательно с помощью HttpClient?

Вариант использования: приложение загружает файлы. Я хочу, чтобы пользователь мог отменить запрос, который выполняется.


person enjoyYourProgramming    schedule 21.06.2018    source источник
comment
попробуйте это - this.$http.post('url', function (data) {}, {beforeSend: function(xhr) { // используем XMLHttpRequest и добавляем обратный вызов xhr.abort }});   -  person MukulSharma    schedule 21.06.2018
comment
Я пробовал это, и это не сработало. Также я не вижу свойства beforeSend в файле определения HttpClient. Возможно, это проблема Angular и AngularJS?   -  person enjoyYourProgramming    schedule 22.06.2018


Ответы (1)


Service:
upload() {
  return this.httpClient.post(); // Some url etc.
}

Component:
  uploadFileSubscription: Subscription;
  uploadFile() {// executed by eg. click
  this.uploadFileSubscription = this.service.upload().subscribe();
}

Затем, когда вы хотите отменить этот запрос на загрузку, просто выполните this.uploadFileSubscription .unsubscribe();

person Buczkowski    schedule 21.06.2018
comment
Я думаю, что это просто мешает вам увидеть ответ, это не останавливает запрос, который еще не был отправлен и все еще находится в процессе загрузки (например, если у вас большой файл). Потому что оно пробовало это. Или я делаю какую-то другую ошибку? - person enjoyYourProgramming; 21.06.2018
comment
Оказывается, была другая проблема :) Спасибо за помощь @Buczkowski - person enjoyYourProgramming; 22.06.2018