【问题标题】:RxJava 3 MapperRxJava 3 映射器
【发布时间】:2021-06-29 21:54:55
【问题描述】:

我在我的项目中使用 RxJava3,但我无法编写请求,我已经绞尽脑汁好几个小时了。

我有 List 并且有一个通过 Stream 返回 Single> 的函数,我想得到一个 Single>>,

fun getMockTopics(streamId: Long): Single<List<Topic>> {
        return Single.just(listOf(Topic(1, "")))
    }
typealias SteamTopics = Map<Stream, List<Topic>>

override fun getTopics(streams: List<Stream?>): Single<SteamTopics> {
        return Observable.fromCallable { streams.filterNotNull() }.flatMapIterable { it }
            .map { stream ->
                Pair(stream, getMockTopics(streamId = stream.streamId))
            }.flatMap {
                TODO("???")
            }
            .toMap({ it.first }, { it.second })
    }

【问题讨论】:

  • 这不是 java,是 kotlin,你有问题吗?请适当地标记问题

标签: android kotlin rx-java rx-java3


【解决方案1】:
fun getMockTopics(streamId: Long): Observable<List<Topic>> {
    return Observable.just(listOf(Topic(1, "")))
}

override fun getTopics(streams: List<Stream?>): Single<SteamTopics> {
    return Observable.fromCallable { streams.filterNotNull() }.flatMapIterable { it }
        .flatMap({ stream ->
            getMockTopics(streamId = stream.streamId)
        }, { stream, topics ->
            Pair(stream, topics)
        }).toMap({ it.first }, { it.second })
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-12
    • 2016-08-09
    • 1970-01-01
    相关资源
    最近更新 更多