Вопрос проверяет понимание модели подписок и жизненного цикла потоков данных в реактивном программировании.
Холодные observable начинают испускать значения только после подписки. Горячие observable испускают значения независимо от наличия подписчиков. Каждый подписчик холодного observable получает собственную последовательность данных. Горячие observable разделяют один поток данных между всеми подписчиками.
Разница между горячими и холодными observable связана с моментом начала генерации данных и тем, как они распространяются между подписчиками.
Определение:
Холодный observable — это поток, который начинает работу только после подписки.
Особенности:
каждый подписчик запускает поток заново
данные воспроизводятся полностью
часто используются для сетевых запросов
Пример:
Observable.from([1, 2, 3])
Каждый подписчик получит значения 1, 2, 3 с самого начала.
Определение:
Горячий observable — это поток, который существует независимо от подписчиков.
Особенности:
значения испускаются постоянно
новые подписчики получают данные с текущего момента
часто используются для UI-событий
Пример:
let subject = PublishSubject<Int>()
Горячие observable подходят для:
событий интерфейса
нотификаций
таймеров
Холодные observable подходят для:
запросов к API
вычислений
загрузки данных
Холодные observable удобны для повторяемых операций, горячие — для потоков событий в реальном времени.