我正在使用Kotlin制作一个应用程序。到目前为止,我的网络调用不需要一起使用。现在我需要进行两个并发的网络调用,等待直到我收到它们的响应,然后继续执行。我想要实现类似于这样的功能:
//first networking call, get resourceOne
var resourceOne : String?
Server.asyncRequest(RequestBuilder(endpoints.second, ids, params)) { resource: String?, error: ServiceError? ->
resourceOne = resource
}
//second networking call, get resourceTwo
var resourceTwo : String?
Server.asyncRequest(RequestBuilder(endpoints.third, ids, params)) { resource: String?, error: ServiceError? ->
resourceTwo = resource
}
//do something here wiith resourceOne and resourceTwo
我的asyncRequest函数的函数头如下:
fun asyncRequest(requestBuilder: RequestBuilder, completion: (resource: String?, error: ServiceError?) -> Unit) {
它只是包装了一个 okhttp 请求并进行一些额外的处理/解析。通常我会在完成 lambda 内部获取结果(资源)并进行处理,但由于我需要两个值,所以我不能在这里这样做。我尝试过类似于这个链接的方法,但我的 asyncRequest 函数没有返回类型,因此我无法像链接中那样进行异步等待。