RxJava-组合多个Single的结果并作为一个整数返回

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

我遇到以下问题:我有一个Single,它返回一个对象列表,在每个对象内,还有一个字段也是Single,并且它返回一个项目列表(这是我需要的),但我也需要将此列表返回为一个结果,而不是每个单独的结果。]

我有一个Observable,可以包装所有这些代码,因此我想在onNext中发出结果。

此外,我还需要将每个Single的单独结果添加到缓存中,且键为父对象

代码:

object.getListOfObjects().doOnSuccess { objectList ->
                      objectList.map { singleItemInList ->
                          singleItemInList.listOfValues.subscribe({ valueList ->
                              cache[singleItemInList] = valueList
                              emitter.onNext(valueList)
                            // ^ this is the bit where i need to get all values instead of 
                            //   emitting on next for each item
                          },{
                              emitter.onError(it)
                          })
                      }
                  }.subscribe( {
                   /* no-op*/

                  }, {
                      emitter.onError(it)
                  })

任何帮助将不胜感激!

预先感谢:)

编辑-额外详细信息:

fun getListOfObjects(): Single<List<Object>> =
        Single.zip(
            allObjects().map { it.objects() }
        ) { t: Array<Any> ->
            t.map { it as Object }
        }

Object {
    [...]
    val listOfValues: Single<ValueList>
    [...]
}
android rx-java rx-java2 rx-android
1个回答
0
投票

在这种情况下以及在最后一步flatMap中使用toList运算符>

object.getListOfObjects()
    .flatMap { objectList -> objectList.listOfValues() }
    .toList()
    .subscribe({ result -> TODO() }, { error -> TODO() })
© www.soinside.com 2019 - 2024. All rights reserved.