Все зависит от того, что делает isLoggedIn
.
Понятно, что isLoggedIn
возвращает наблюдаемое.
Теперь, и наблюдаемое может сделать только 3 вещи
Итак, первый вопрос: сколько раз isLoggedIn
может уведомить? Это всего лишь один выстрел или поток уведомлений? Если он может выдать только одно значение и затем завершить, то оператор take(1)
бесполезен.
Но есть также случай, когда isLoggedIn
никогда не уведомляет и просто завершает работу. В этом случае уведомление никогда не будет отправлено наблюдателем своему подписчику. Использование оператора defaultIfEmpty
гарантирует, что что-то уведомляется даже в этом случае.
Итак, читая ваш код, я понимаю, что isLoggedIn
может вести себя этими двумя способами
- Излучать больше, чем один раз, но вы заинтересованы только в первом уведомлении
- Никогда не уведомлять и просто заполнить, в этом случае вы хотите, чтобы
false
было возвращено
Если это не так, оно может В таком случае ваш код может быть упрощен.