Sobes.tech
Back to questions
Junior — Middle
79

Чем отличаются типы данных Single и Observable в библиотеке RxJava?

Companies where asked
СБЕР ЗвукСБЕР Звук

Answer from AI

sobes.tech AI

В RxJava типы Single и Observable отличаются по количеству и характеру эмитируемых элементов:

  • Observable может эмитировать любое количество элементов (0, 1, или много), а также завершаться успешно или с ошибкой. Он подходит для потоков данных, где ожидается несколько значений во времени.

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

Пример использования Single:

Single<String> single = Single.just("Hello");
single.subscribe(
    item -> System.out.println("Получено: " + item),
    error -> System.err.println("Ошибка: " + error)
);

Observable же может выглядеть так:

Observable<Integer> observable = Observable.just(1, 2, 3);
observable.subscribe(
    item -> System.out.println("Получено: " + item),
    error -> System.err.println("Ошибка: " + error),
    () -> System.out.println("Завершено")
);