Что такое Observables и как они влияют на HttpClient - PullRequest
0 голосов
/ 30 мая 2018

В angular у нас есть Observables, что облегчает обработку HTTP-запросов.Наряду с этим есть такие функции, как

map (), subscribe (), pipe ()

, и я не знаю много.

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

1 Ответ

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

Это широкая тема (может охватывать все RxJS), но вот основы.

Наблюдаемые являются объектами, которые могут асинхронно излучать значение, иуведомлять пользователей, когда есть ошибка или больше объектов не будет испущено.Вы регистрируетесь, чтобы получить значения из наблюдаемой, используя subscribe (хорошо, технически это не only , но это обычный и самый простой способ).Они разрешают такой поток:

  1. Наблюдаемые созданы
  2. Вы подписываетесь и распечатываете испускаемое значение (obs.subscribe(v => console.log(v))
  3. Время проходит, вещи происходят (методкуда была вызвана подписка, уже давно возвращено)
  4. Наблюдаемое излучает "Hello World"
  5. Вызывается обратный вызов, который вы передали в subscribe, и на консоль выводится "Hello World".

Они полезны в HTTP-запросах (через HttpClient), в частности, потому что HTTP-запросы изначально асинхронны.Вы положили байты на провод, и в какой-то момент байты вернутся.Вы не хотите, чтобы ваш сайт зависал, пока вы ждете.Следовательно,HttpClient методы возвращают наблюдаемые, на которые вы подписаны, чтобы получить результат запроса.

Что касается методов, которые вы упомянули (map, filter, pipe), то они просто вспомогательные методыкоторые позволяют вам делать различные вещи для наблюдаемого, когда он излучает.Есть лотов больше, и вы можете найти намного больше о каждом из них в документации.Краткий обзор map и filter (не использовал pipe):

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