Angular Http - toPromise или подписаться
Я просмотрел несколько курсов по Angular и нашел, что есть способы управления данными из запроса Http.
- Использование Observables,
.map()
, .subscribe()
- Используя Promises,
.toPromise()
, .then()
, .catch()
Я использовал toPromise()
в своем приложении, поскольку нашел его похожим на службы AngularJS Http.
В каком сценарии мне понадобится использовать Observables?
Ответы
Ответ 1
Если вам нравится стиль реактивного программирования и вы хотите быть последовательным в своем приложении, чтобы всегда использовать наблюдаемые даже для отдельных событий (вместо потоков событий), то используйте наблюдаемые. Если это не важно для вас, используйте toPromise()
.
Одним из преимуществ наблюдаемых является то, что вы можете отменить запрос.
См. также Angular - Promise vs Observable
Ответ 2
Я думаю, что пока ответ не является потоком данных, который вы собираетесь использовать, вам лучше использовать подход .toPromise()
, потому что бессмысленно продолжать слушать ответ, который вам не нужен, и он не даже собираюсь поменять.
Ответ 3
HTTP-запросы по умолчанию в угловом формате испускают наблюдаемые. Его можно преобразовать в обещание, вызвав toPromise(). Но это не обязательно. Angular отменяет подписку на http-запрос, как только он будет решен путем вызова
'_xhr.removeEventListener('load', onLoad);
_xhr.removeEventListener('error', onError);
_xhr.abort();'
Наблюдаемые могут быть отменены, но обещания - нет.
Открытый запрос остается даже после уничтожения компонента, что приводит к утечке памяти, которую можно предотвратить, отписав наблюдаемый или вызвав метод уничтожения, как только компонент будет уничтожен. Способы отписаться, чтобы предотвратить утечки памяти
Заключение: лучше использовать наблюдаемые с методами предотвращения утечки памяти.