How to use RxJava combineLatest operator with more than 9 observables

前端 未结 6 597
一个人的身影
一个人的身影 2020-12-16 17:25

I\'m using RxJava and I want to combine 12 different observables using the operator combineLatest.

I saw a function prototype that takes a list of obse

6条回答
  •  清酒与你
    2020-12-16 17:29

    Yo expand on that answer, I am using it to read multiple characteristics at once, it can be done like so:

    connectionObservable
                    .flatMap((Func1>) rxBleConnection -> {
                        List> list1 = Arrays.asList(
                                rxBleConnection.readCharacteristic(UUID...),
                                rxBleConnection.readCharacteristic(UUID...),
                                rxBleConnection.readCharacteristic(UUID...),
                                rxBleConnection.readCharacteristic(UUID...),
                                rxBleConnection.readCharacteristic(UUID...),
                                rxBleConnection.readCharacteristic(UUID...),
                                rxBleConnection.readCharacteristic(UUID...),
                                rxBleConnection.readCharacteristic(UUID...),
                                rxBleConnection.readCharacteristic(UUID...),
                                rxBleConnection.readCharacteristic(UUID...),
                                rxBleConnection.readCharacteristic(UUID...),
                                rxBleConnection.readCharacteristic(UUID...),
                                rxBleConnection.readCharacteristic(UUID...),
                                rxBleConnection.readCharacteristic(UUID...),
                                rxBleConnection.readCharacteristic(UUID...),
                                rxBleConnection.readCharacteristic(UUID...),
                                rxBleConnection.readCharacteristic(UUID...),
                                rxBleConnection.readCharacteristic(UUID...));
                        return Observable.combineLatest(list1, args -> {
                           Object o =  doSomethingWithResults(args);
                            return o;
                        });
                    })
                    .observeOn(AndroidSchedulers.mainThread())
                    .doOnUnsubscribe(this::clearConnectionSubscription)
                    .subscribe(retVal -> {
                        Log.d(TAG, "result:" + retVal.toString());
                        Log.w(TAG, "SUCCESS");
                        triggerDisconnect();
    
                    }, MyActivity.this::onReadFailure);
        }
    

    Comments if you have suggestions on how to improve this process.

提交回复
热议问题