我有一个连接远程服务的任务。当它没有连接时 - 启动整个连接程序,如果已连接 - 就完成了。为此我写了这种方法 -如何正确完成flatMap链中的Completable?
public Completable execute() {
return fptrService.isConnected()
.flatMap(isConnected -> {
if (isConnected) return Single.never();
else return bluetoothService.isBluetoothAvailable();
})
.flatMap(isAvailable -> {
if (isAvailable) return bluetoothService.isBluetoothActivated();
else throw new BluetoothNotAvailableException();
})
.flatMap(isActivated -> {
if (isActivated) return bluetoothService.searchForFptr();
else throw new BluetoothNotActivatedException();
})
.flatMapCompletable(fptrService::connect);
}
在第一种情况下,当服务没有连接 - 一切正常。但是,如果在第一阶段isConnected()返回TRUE,所有链拖延并且Completable完全没有完成。我能做些什么来强制在第一阶段完成?
尝试返回'Completable.complete()'而不是Single.never() –
尝试......(但flatMap想回单,不完整 –