0

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

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

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

1 回答 1

0
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 })
}
于 2021-04-03T10:12:40.067 回答