如何解决RxJava onSuccess()方法中的意外返回值?

问题描述 投票:0回答:1

我打算把我的一个方法从这个方法重构。

if (!isMobileBluetoothOn()) {
            sendError();
            return false;
        }

改成这个

getBluetoothState().subscribe(state->{
            if(!state.isEnabled()){
                sendError();
                return false;
            }
        });

但我在IDE中得到这个错误 "UnExpected return value"我如何才能在onSuccess方法中返回布尔值?

java android rx-java rx-android
1个回答
1
投票

我建议你把这里的逻辑分割成这样。

Observable<Boolean> isBluetoothEnabled = getBluetoothState()
    .map(state -> {state.isEnabled()})
    .replay(1)
    .refCount()
...
// use isBluetoothEnabled for something you need
...
isBluetoothEnabled
    .subscribe(isEnabled -> {
        if (!isEnabled) {
            sendError()
        }
    })

0
投票

我真的不知道你的情况,但你说..:

事实上,我是在一个返回类型为布尔值的方法中调用这个方法,我想从onSubscribed方法中返回布尔值。

看起来你要同步获取布尔值。对于反应式编程来说,这绝对是不好的做法,但无论如何,你可以使用你的 Observable 作为 BlockingObservable. 代码看起来像这样。

val isEnabled = getBluetoothState().toBlocking().first().isEnabled()

你可以阅读更多关于 BlockingObservable 这里。http:/reactivex.ioRxJavajavadocrxobservablesBlockingObservable.html。

尽量避免这种做法,但有时你必须使用它,可能是你的情况。

祝您好运!

© www.soinside.com 2019 - 2024. All rights reserved.