Ответ
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() — надоело — отписался, и похуй. Не то что некоторые промисы, которые уже не остановишь, блядь.
Вот такая, понимаешь, мощная абстракция, чтобы с асинхронщиной не сойти с ума.