В чем отличие Observable от Promise?

Еще один вопрос из тех, что любят спрашивать на собеседованиях на фронтенд-разработчика на Angular: в чем отличие Observable от Promise? Разбираемся.

Promise

Promise обрабатывает одно событие, когда асинхронная операция завершается успешно или с ошибкой.

Существуют библиотеки, которые позволяют отмену Promise, но в стандарте ES6 Promise это пока не работает.

Observable

Observable похож на Stream (поток) в других языках и позволяет пропускать ноль или более событий, в то время как обратный вызов вызывается для каждого события.

Часто Observable предпочтительнее Promise, поскольку он включает в себя функции Promise и имеет больший функционал. С Observable не имеет значения, хотите ли вы обрабатывать 0, 1 или несколько событий. Вы можете использовать один и тот же API.

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

Запись опубликована в рубрике Angular 2/4/5 с метками , , . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre lang="" line="" escaped="" cssfile="">