Зачем использовать Observable через HTTP в Angular - PullRequest
0 голосов
/ 30 сентября 2019

Я новичок в Angular и пытаюсь выяснить, в каких случаях лучше всего использовать rxjs / Observables, а не просто использовать вызовы get / post по протоколу Http.

Из того, что я прочитал, Observables лучше всего использовать, когда данные должны загружаться лениво в режиме push, а не в режиме pull в Javascript. Кроме того, кажется, что данные будут поступать в любом количестве пакетов, которые не определены заранее. Единственное, что я могу рассматривать в качестве сценария использования Observables, - это использовать веб-сокеты и такие вещи, как новостные ленты или что-то вроде сценария в виде фида в Facebook, но я видел несколько примеров, где Observables использовались для выполнения HTTP-вызова GETтакже. Я не уверен, зачем это нужно.

Если я могу просто сделать http.get, зачем мне нужно http.get (). Подписываться?

Ответы [ 2 ]

2 голосов
/ 30 сентября 2019

Вопрос «Зачем использовать Observable over HTTP» опирается на ложное предположение, что они являются альтернативными способами сделать то же самое. Это яблоки и апельсины;Observables предлагают способ (инструмент) для создания и обработки HTTP-операций. Это все равно, что спросить «Зачем использовать вилку над миской с рисом?» Вилка - это всего лишь инструмент, помогающий справиться с рисом;они не являются ни / или опциями.

Я предполагаю, что более важный вопрос выглядит примерно так:

"Что хорошего в наблюдаемых потоках, когда в вызовах HTTP все, что мне нужно, этополучить мои данные один раз правильно, когда я их попрошу? "

Это более интересный вопрос. Это правда, что в большинстве простых случаев достаточно базового подхода, основанного на Promise, такого как нативный fetch API, но у него есть свои недостатки. Самые большие преимущества Observables, о которых я могу думать прямо сейчас:

  • Observables легче составлять и объединять в существующие логические потоки: предположим, мое приложение должно разумно реагировать на результат первоначального HTTP-вызова;например, я могу захотеть динамически совершить другой вызов, или пропустить этот второй вызов при определенных условиях, или повторить исходный вызов после задержки и т. д. Эти вещи потребуют большей сложности и большего количества кода для работы с обещаниями. Observables были созданы с учетом логических потоков.
  • Observables лучше подходят, когда вы заботитесь не только о конечном результате: предположите, что мое приложение должно давать обратную связь с пользователем, когда файл загружается или загружается. Подход, основанный на Promise, также не будет работать, потому что Promise разрешается один раз, тогда как поток Observable может генерировать события прогресса.
0 голосов
/ 30 сентября 2019

Просто используйте службу Angular HttpClient, и вы будете использовать http-клиент, построенный с помощью наблюдаемых RxJs.

Вы можете добавить его в свои службы

constructor(http: HttpClient)

и использовать его как

this.http.get('URL to your endpoint');

Вы должны подписаться, чтобы запустить запрос http. Создание холодной наблюдаемой не приводит к потоку данных до тех пор, пока наблюдатель не подпишется на наблюдаемую.

Узнайте как можно больше о RxJ при запуске Angular, Angular в значительной степени построен на RxJ, и вы должны изучить RxJ перед изучениемУгловой.

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