Преобразование наблюдаемого в обещание - PullRequest
0 голосов
/ 10 сентября 2018

Является ли хорошей практикой преобразование наблюдаемого объекта в обещание, поскольку наблюдаемое может использоваться почти во всех случаях вместо обещания?

Я недавно начал изучать английский язык и встретил фрагмент кода в новом проекте (Angular 5) на своем рабочем месте. Этот фрагмент кода используется для загрузки списка данных, например списка клиентов. Этот набор данных списка клиентов принимается как одноразовое действие, а не как поток. Поэтому он не имеет технических ограничений для использования обещания. Но я хотел бы знать, есть ли какие-либо недостатки или ограничения.

  getViewDataForPage(): Promise<any> {
    return this.commonDataService.getViewDataForPage(args_set)
      .toPromise()
      .catch(error => this._exceptionService.catchBadResponse(error));
  }


  //in commonDataService.ts
  getViewDataForPage(args_set): Observable<any> {
    /** logic goes here */
    return this.httpConnection.post(viewDataRequest, args);
  }

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Вы можете использовать оба. Observable используется, когда вы собираетесь получать разные значения в течение времени, больше похоже на то, когда вы подписываете в каком-то журнале, когда когда-либо mazagazine В новой редакции вы будете уведомлены, и то же самое случится со всеми подписчиками, и каждый получит новое значение или, в этом случае, новый журнал .

В случае Обещания это Async как наблюдаемая, но это просто случаются.

Тогда, если произойдет следующий код, в этом случае все в порядке, обещание

getViewDataForPage(): Promise<any> {
    return this.commonDataService.getViewDataForPage(args_set)
      .toPromise()
      .catch(error => this._exceptionService.catchBadResponse(error));
  }


  //in commonDataService.ts
  getViewDataForPage(args_set): Observable<any> {
    /** logic goes here */
    return this.httpConnection.post(viewDataRequest, args);
  }
0 голосов
/ 10 сентября 2018

Это зависит от ваших требований, технически наблюдаемые лучше обещаний, потому что они предоставляют функции Promise и многое другое.С Observable не имеет значения, хотите ли вы обрабатывать ни один из нескольких событий.

Observables являются отменяемыми т.е., используя unsubscibe(), вы можете отменить наблюдаемое независимо от его состояния.

Promises с другой стороны, иметь дело только с1 асинхронное событие, т. Е. .., оно либо разрешится, либо отклонится, если произойдет ошибка

Хорошее место для Promise было бы, если бы у вас был хотя бы один элемент обработки, например.

...