У меня есть функция, которая принимает логическое входное значение, и в зависимости от этого она должна подписаться на Observable в одном случае и немедленно вернуться в другом случае. Вот как это выглядит:
fun getMap(needsReauth: Boolean): Map<String, Any>? {
if (needsReauth) {
AuthManager.reauthenticate().subscribe {
return createMap()
}
} else {
return createMap()
}
}
Приведенный выше метод reauthenticate()
возвращает Observable, и его необходимо вызывать и возвращать только после завершения. В противном случае он может немедленно вернуть значение, полученное из createMap()
.
. Две очевидные проблемы заключаются в том, что я получаю «возврат не разрешен здесь» для первого оператора возврата, и я получаю ошибку, потому что Я не возвращаю ничего за пределами оператора if.
Есть ли другой способ, которым это может быть по-разному написано для правильной работы? Я попробовал некоторые предложения, которые я нашел (например, назвав лямбду, встроенную функцию), но, похоже, ничего не работает, и я, вероятно, упускаю что-то очевидное, предполагая, что это возможно.
Редактировать: Этот метод является метод обратного вызова в интерфейсе, который запускается из стороннего SDK, поэтому у меня нет гибкости относительно фактического ввода или вывода метода.