как обработать net :: ERR_TIMED_OUT из объекта xhr при вызове удаленного сервиса - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть следующий код angular / rxjs, который использует объект xhr для загрузки файла

  async download(fileToUpload: UploadedFileMetaData): Promise<Observable<DownloadEvent>> {
    const url = await this.getDownloadUrl(fileToUpload);

    let xhr = new XMLHttpRequest();

    xhr.responseType = 'blob';

    return Observable.create((observer) => {
      xhr.open('GET', url);
      xhr.send();

      xhr.addEventListener('progress', (progress) => {
         // handle progress
      });

      xhr.addEventListener('load', (e: ProgressEvent & { target: { response: Blob } }) => {
        if (e.target['status'] !== 200) {
          observer.error({ state: DownloadState.failure, error: e.target });
        } else {
          observer.next({ state: DownloadState.success, response: e.target.response });
          observer.complete();
        }
      });

      xhr.addEventListener('error', (err) => {
        console.log('upload error', err);

        observer.error({ state: DownloadState.failure, error: err.message });
      });

      xhr.addEventListener('abort', (abort) => {
        console.log('upload abort', abort);

        observer.error({ state: DownloadState.failure, error: 'Transfer aborted by the user' });
      });

      return () => xhr.abort();
    });

Запросы отправляются в хранилище BLOB-объектов Azure, и иногда я получаю ошибку net::ERR_TIMED_OUT.

Но возникновение этой ошибки не вызывает какой-либо из обработчиков, которые я в настоящее время назначил объекту xhr.

Как я могу поймать и обработать это

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