В чем разница между Promise и Observable?

RedDeveloper
11.04.2022 20:00
В чем разница между Promise и Observable?

Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.

Что такое Promise?

Promise - это объект, который представляет собой возможный успех или неудачу асинхронной операции. А также его возвращаемое значение.

Вы когда-нибудь замечали, как компьютерное программирование заимствует многие термины из обычного языка?

В данном случае мы используем слово promise, которое в обычном английском языке означает заявление о том, что что-то будет или не будет сделано, согласно словарю.

Когда мы говорим об обещании в JavaScript, мы говорим об асинхронной операции, которая была обещана. Это означает, что обещание JavaScript - это обещанная операция, которая имеет различные состояния, такие как...

JavaScript Promise является основой асинхронного программирования в JavaScript. Он позволяет нам ставить асинхронные задачи в очередь в виде Promise и выполнять другие действия, пока мы ждем выполнения обещания.

Что такое Observable?

Согласно документации RxJS, Observable - это...

Проявление потребителя. Тип, который может иметь некоторые (или все) обработчики для каждого типа уведомлений: next, error и complete. Наличие всех трех типов обработчиков обычно позволяет назвать его "наблюдателем", а если в нем отсутствует какой-либо из обработчиков уведомлений, его можно назвать "частичным наблюдателем".

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

Другими словами, Observable наблюдает за всем, что вы ему укажете, а затем срабатывает при выполнении определенного условия.

Как в этом примере - мы наблюдаем за нажатием определенной кнопки и затем выводим журнал в консоль.

var button = document.querySelector('button');
Rx.Observable.fromEvent(button, 'click').subscribe(() => console.info('Button clicked'));

В чем разница между Observable и Promise?

Promise предназначены для событий, которые происходят один раз. Observable предназначены для обработки событий, которые происходят несколько раз (или вообще не происходят) с течением времени.

И, конечно, Observable имеет множество других возможностей, которых нет у Promise, например, операторы трансформации и фильтрации и т.д.

Когда следует использовать Promise или Observable?

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

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

Promise хороши для разовых событий, а Observables - для потоков данных.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?

20.08.2023 18:21

Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в 2023-2024 годах? Или это полная лажа?".

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией

20.08.2023 17:46

В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox

19.08.2023 18:39

Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в частности, магию поплавков и гибкость flexbox.

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest

19.08.2023 17:22

В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для чтения благодаря своей простоте. Кроме того, мы всегда хотим проверить самые последние возможности в наших проектах!

Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️

18.08.2023 20:33

Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий их языку и культуре.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL

14.08.2023 14:49

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