Почему Angular использует Observable для HttpClient? - PullRequest
0 голосов
/ 23 мая 2018

Согласно https://angular.io/tutorial/toh-pt6

Как правило, наблюдаемая может возвращать несколько значений с течением времени.Наблюдаемый из HttpClient всегда выдает одно значение, а затем завершает его, никогда не испуская снова.

Что действительно верно, запрос / ответ Http не может генерировать больше значений после завершения запроса.Так какова основная причина, по которой HTTPClient возвращает Observable при выполнении запроса?Это просто потому, что мы можем применить огромный набор операторов к Observable (повтор, отладка и т. Д.)?или есть какая-то другая конкретная причина, по которой я скучаю?

Ответы [ 3 ]

0 голосов
/ 23 мая 2018

Лучший ответ, который вы найдете, - это Pascal Precth , который объяснил, что по специальному вопросу, заданному в декабре 2015 года: "Имеют ли значения Observables для http?"(но не стесняйтесь читать, множество дополнительных ответов тоже действительно хороши!)

На моей голове:
- Повторить
- Отмена
-Наслаждайтесь всеми операторами Rxjs
- Возможность комбинировать их в виде потоков
- Реактивно мыслить во всем приложении
- Согласованность
- Наблюдаемые объекты холодны по своей природе, нет необходимости упаковывать их, как обещания в фабрикуфункция, если вы хотите запустить его позже

0 голосов
/ 23 мая 2018

Наблюдаемые - это стандартные асинхронные обработчики в Angular Framework.

Под стандартом я подразумеваю, что наблюдаемые поддерживаются асинхронным каналом, средствами защиты маршрутизации, определителями маршрутизации, источниками событий компонентов и многими другими местами.

Команда Angular приложила немало усилий для поддержки обещаний в качестве запасного варианта для многих из этих функций, но в любом случае эти обещания просто превращаются в наблюдаемые.

Посылая запросы HttpКоманда разработчиков Angular делает асинхронные операции в ядре совместимыми со всем остальным.

Есть еще некоторые преимущества наблюдаемых по сравнению с обещаниями, но это, прежде всего, мнение (как, по моему мнению).

  • Вы можете легко смешивать запросы Http и WebSockets в службеи выставить API как наблюдаемые.Потребитель сервиса не будет знать разницу.
  • Вы можете легко преобразовать запрос Http для массива в наблюдаемый объект, который испускает каждый элемент в отдельности.Это значительно облегчает отправку данных разным потребителям.
  • Обещания могут нарушаться, если они не связаны должным образом.Эти распространенные ошибки часто можно избежать с помощью наблюдаемых.
0 голосов
/ 23 мая 2018

Для поддержания согласованности API.Не нужно вводить обещания, например.Наблюдаемые в любом случае более гибкие, чем обещания.Причем наблюдаемые могут отслеживать своих подписчиков.В случае HttpClient вызов производится после появления подписки.Если вы не подписываетесь на HTTP-вызов, запрос не будет выполнен.

Поэтому, если вы подписываетесь несколько раз на 1 наблюдаемую, будет выполнен несколько запросов.

...