Ответ лежит на парадигме функционального программирования.В более сложных случаях вы хотите начать применять операторы к этому результату, который вы только что получили.Допустим, вы хотите получить данные из другой службы на основе вашего результата, а затем добавить успех в конце.В функциональном стиле это будет выглядеть так:
`repo.fetchResult ()
.flatMap {repo2.fetchSecondResultById (it)}
.map {it.concat ("success ")}`
Это простой пример, который может ухудшиться в зависимости от вашего бизнеса.Конечно, в функциональных библиотеках гораздо больше операторов, которые могут помочь в более сложных случаях.Теперь, когда приходит LiveData. LiveData была попыткой Google сделать реактивную реализацию.Но позже они поняли, что RxJava использовался настолько интенсивно, что решили не продолжать эту работу.В то же время Kotlin набирал популярность в Android.Kotlin поставляется с Coroutines and Flow, который также является другой реактивной библиотекой.Тогда Google, чтобы не фрагментировать экосистему, еще больше решил отказаться от усилий LiveData, и они просто остаются в старых образцах или когда вы хотите доставить событие из ViewModel в View.
Но усилия по созданию LiveData с возможностью цепочкиили функциональный отдых на море.Используйте Flow или RxJava.Ваш репо должен вернуть Single, Observable или Flow.