改造kotlin-提出一个api请求,然后再提出两个并发请求

q5iwbnjs  于 2021-08-20  发布在  Java
关注(0)|答案(0)|浏览(261)

我想发出一个api请求,然后我需要在收到数据后再发出两个请求。我发现了一个很好的so答案,它使用rxjava2在这里发出两个并发请求:
如何在改型2.0-android中发出多个请求并等待数据来自所有请求
我想我可以在第一个请求之后链接逻辑,但是我的直觉告诉我这是个坏主意,因为我会复制一些代码(我会为函数中的第一个请求使用单独的逻辑,然后为函数中的后两个请求使用类似的逻辑)
有没有更好的方法来实现这一点?我更喜欢kotlin,但java还可以。
下面是来自so应答的并发请求的代码。

val retrofit = Retrofit.Builder()
            .baseUrl("https://api.example.com/")
            .build()

    val backendApi = retrofit.create(MyBackendAPI::class.java)

    val requests = ArrayList<Observable<*>>()

    requests.add(backendApi.getUser())
    requests.add(backendApi.listPhotos())
    requests.add(backendApi.listFriends())

    Observable
            .zip(requests) {
                // do something with those results and emit new event
                Any() // <-- Here we emit just new empty Object(), but you can emit anything
            }
            // Will be triggered if all requests will end successfully (4xx and 5xx also are successful requests too)
            .subscribe({
                //Do something on successful completion of all requests
            }) {
                //Do something on error completion of requests
            }

谢谢

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题