微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

RxJava 3 映射器

如何解决RxJava 3 映射器

我在我的项目中使用 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 })
    }

解决方法

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 })
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。