Как выполнить некоторый код, когда мой вызов rest завершен с Observable в Angular - PullRequest
0 голосов
/ 04 июня 2019

Я загружаю файл по остальным API, я хочу знать, как можно сделать что-то, когда вызов завершен.

Я пытаюсь это:

public upload(file: File,url: string) {
  const formdata: FormData = new FormData();
  formdata.append('file', file);
  const req = new HttpRequest('POST', url, formdata, {
    reportProgress: true,
    responseType: 'text'
  });
  return this.http.request(req);
}.

upload() {
  var elem = document.getElementById("dynamic");
  this.importService.create(new ImportFile())
  this.importService.uploadFile(this.currentFileUpload)
    .subscribe({
      next(event) {
        if (event != null) {
          if (event.type === HttpEventType.UploadProgress) {
            elem.style.width = Math.round(100 * event.loaded / event.total) + '%';
          } else if (event instanceof HttpResponse) {
            console.log('File is completely uploaded!');

          }
        }
      },
      complete() { this.finish(); }
    });
}

Я ожидаю, что метод execute finish () будет завершен, и мой шаблон получит эти изменения

1 Ответ

1 голос
/ 04 июня 2019

Попробуйте с оператором финализации:

this.importService.uploadFile(this.currentFileUpload)
  .pipe(finalize(event => this.finish()))
  .subscribe(...);

Документация

Обратите внимание, что наблюдаемые должны быть заполнены для запуска оператора. Обычно HTTP-вызовы завершаются, но вы никогда не знаете.

...