首页 > 解决方案 > 如何将 Function3 转换为并行命中 2 个 API 而不是 3 个或更多?

问题描述

我正在使用以下方式并行访问 3 个 API,因为我可以看到,如果您想访问更多 API,则有 Function4、5、6,但没有 Function2<..> 那么使用什么来访问 2 个 API?

Observable.zip(
        backendApi.getFCdata("","","",""),
        backendApi.getAKCountry(),
        backendApi.getRecyclerData("","",""),
        Function3<ResponseGetFCData, ResponseAK, List<ResponseMarket>, List<ResponseMarket>> { 
            fcData, akCountry, recyclerData ->

            // Your operation here

            return recyclerData
        })
        .observeOn(AndroidSchedulers.mainThread())
        .doOnSubscribe { /* Loading Start */ }
        .doOnTerminate { /* Loading End */ }
        .subscribe(
                { /* Successfully Synced */ },
                { /* Having error */ }
        )

使用上述示例的 2 个 API 的转换形式将有很大帮助。谢谢你。

标签: androidobservablerx-javarx-android

解决方案


您必须BiFunction为此目的使用。检查以下:

Observable.zip(
    backendApi.getFCdata("","","",""),
    backendApi.getRecyclerData("","",""),
    BiFunction<ResponseGetFCData, List<ResponseMarket>, List<ResponseMarket>> {
        fcData, recyclerData ->

    // Your operation here

    return recyclerData
})
.observeOn(AndroidSchedulers.mainThread())
.doOnSubscribe { /* Loading Start */ }
.doOnTerminate { /* Loading End */ }
.subscribe(
    { /* Successfully Synced */ },
    { /* Having error */ }
)

推荐阅读