Как вернуть значение внутри подписки - PullRequest
0 голосов
/ 21 сентября 2019

У меня есть следующий код

fun fetchUsersNumber(): Int {

    subscriptions.add(mRepository.getCount()
        .subscribeOn(Schedulers.io())
        .subscribe {
            count -> view?.updateNumber(count)
        })
}

В моем mRepository.getCount () я возвращаю Single

override fun getCount(): Single<Int> {
    return mDao.getCount()
}

, мой DAO имеет вид:

@Query("SELECT COUNT(*) FROM users)
fun getCount(): Single<Int>

my View - это просто метод с параметрами Int.

fun updateNumber(count: Int) {
    // display user number
}

Моя проблема: - Я хотел бы вернуть значение счетчика.Как я могу это сделать?Потому что в моей деятельности у меня будет что-то вроде:

textView.text = presenter.fetchUserNumber()

Ответы [ 2 ]

1 голос
/ 21 сентября 2019

Это просто, вам не нужно ничего делать, ваш докладчик сделает для вас.Вам просто нужно вызвать свой метод и проверить результат, вы получите желаемый результат.И, как сказал JakeB, вы должны применить OnError в случае сбоя.

fun fetchUsersNumber(): Int {

    subscriptions.add(mRepository.getCount()
        .subscribeOn(Schedulers.io())
        .subscribe (
            { count -> view?.updateNumber(count) },
            { // your Error here }
        )
    )
}
1 голос
/ 21 сентября 2019

Ваш докладчик будет обрабатывать подписку в своих методах жизненного цикла и отправит результат на updateNumber() в результате подписки.Примените onError, чтобы обработать событие, которое не удалось, вызывая другой метод в представлении, чтобы предупредить пользователя.

fun updateNumber(count: Int) {
    textView.text = count
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...