как отписаться от наблюдаемой, возвращенной из Observable.create в rxjs 5.1 - PullRequest
0 голосов
/ 21 февраля 2019

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

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

    let xhr = new XMLHttpRequest();

    xhr.responseType = 'blob';

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

      xhr.send();

      xhr.addEventListener('progress', (progress) => {
        let percentCompleted;

Возвращает ovservable.

Затем я использую его так:

const downloadSubscription = await this.blobStorageService.download(file);

downloadSubscription.subscribe((event) => // do stuff

Может быть создано несколько из них.

Как мне отписаться?

Ответы [ 2 ]

0 голосов
/ 23 февраля 2019

В конце концов я пошел с этим:

   const destroy$ = new Subject<boolean>();

   downloadSubscription.takeUntil(destroy$).subscribe(
      // main body
      },
      (downloadEvent: FailureDownloadEvent) => {
        // error
        destroy$.next(true);
        destroy$.unsubscribe();
      },
      () => {
        // cleanup
        destroy$.next(true);
        destroy$.unsubscribe();
      }
    );
  }
0 голосов
/ 21 февраля 2019

Вы можете сохранить возвращаемое значение метода subscribe(), являющееся объектом Subscriber, в переменной и вызвать метод unsubscribe(), если хотите отписаться.

const downloadSub = downloadSubscription.subscribe((event) => {});

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