リモートサービスに接続するタスクがあります。それが接続されていないとき - 接続手順全体を起動します。この目的のために、私はこのメソッドを書いた -どのように正しく完成する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);
}
第1の場合、サービスが接続されていない - すべて正常に動作します。しかし、最初の段階でisConnected()がTRUEを返し、すべてのチェーン・ストールとCompletableはまったく完了しません。私は最初の段階で完全に強制することができますか?あなたはこれで言った何
試みを返すように 'Completable.complete()'の代わりにSingle.never() –
が...しようとしました(しかし、flatMapはシングル返すように望んでいるの、完了していない –