строго типизированный Observable.create в rxjs 5.1.0 - PullRequest
0 голосов
/ 20 февраля 2019

Я использую Observable.create, чтобы поднять события загрузки из xhr.

У меня есть этот код:

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

  xhr.send();

  xhr.addEventListener('progress', (progress) => {
    const percentCompleted = percentCompleted = Math.round((progress.loaded / progress.total) * 100);

    observer.next({ state: DownloadState.progress, progress: `${percentCompleted}%` });
  });

  xhr.addEventListener('load', (e: any) => {
    if (e.target['status'] !== 200) {
      observer.error({ state: DownloadState.failure, error: e.target });
    } else {
      observer.next({ state: DownloadState.progress, response: e.target });
      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();
});

}

сделать невозможно Observable.create строго типизирован в 5.1.0.

Должен ли я создать BehaviorSubject?

Как я могу реорганизовать свой код в строго типизированную версию?

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