Что такое Observable

Ответ

Observable — это паттерн, представляющий поток данных, который можно наблюдать. Он позволяет асинхронно обрабатывать события, значения или ошибки. В JavaScript реализуется через библиотеки, например, RxJS.

Пример:

import { Observable } from 'rxjs';

const observable = new Observable(subscriber => {
  subscriber.next(1);
  subscriber.next(2);
  setTimeout(() => {
    subscriber.next(3);
    subscriber.complete();
  }, 1000);
});

observable.subscribe({
  next: value => console.log(value),
  complete: () => console.log('Done')
});
// Вывод: 1, 2, (через 1 сек) 3, 'Done'

Особенности:

  • Ленивые вычисления (выполняется только при подписке)
  • Множественные подписки
  • Операторы для трансформации (map, filter и т.д.)
  • Отмена через unsubscribe()

Ответ 18+ 🔞

Слушай, а Observable — это ж как такая штука, которая тебе данные стримит, а ты на них подписался и смотришь, как они приплывают. Типа асинхронный ручеёк событий, значений или даже ошибок, за которым можно подсматривать. В JavaScript это обычно через библиотеки типа RxJS делается.

Вот смотри, пример:

import { Observable } from 'rxjs';

const observable = new Observable(subscriber => {
  subscriber.next(1);
  subscriber.next(2);
  setTimeout(() => {
    subscriber.next(3);
    subscriber.complete();
  }, 1000);
});

observable.subscribe({
  next: value => console.log(value),
  complete: () => console.log('Done')
});
// Вывод: 1, 2, (через 1 сек) 3, 'Done'

А фишка-то в чём, блядь:

  • Ленивые вычисления — эта поебень вообще нихрена не делает, пока ты на неё не подпишешься. Сидит, ждёт, как хитрая жопа.
  • Множественные подписки — можно хоть десять наблюдателей навесить, все получат свои данные, ёпта.
  • Операторы для трансформации — там этих map, filter, — овердохуища всего, чтобы поток как хочешь крутить-вертеть.
  • Отмена через unsubscribe() — надоело — отписался, и похуй. Не то что некоторые промисы, которые уже не остановишь, блядь.

Вот такая, понимаешь, мощная абстракция, чтобы с асинхронщиной не сойти с ума.