小编Bil*_*ean的帖子

在 Kotlin 中等待多个回调/lambdas 的结果

我正在用 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
Run Code Online (Sandbox Code Playgroud)

我的 asyncRequest 函数的函数头是:

fun asyncRequest(requestBuilder: RequestBuilder, completion: (resource: String?, error: ServiceError?) -> Unit) {
Run Code Online (Sandbox Code Playgroud)

它只是围绕一个 okhttp 请求并进行一些额外的处理/解析。通常我只会获取结果(资源)并在完成 lambda 内部处理它,但由于我需要这两个值,我不能在这里这样做。我试图做类似的东西这个,但我的asyncRequest函数没有返回类型,所以我没有做异步方式/等待链接的方式做。

asynchronous kotlin okhttp

5
推荐指数
1
解决办法
1593
查看次数

标签 统计

asynchronous ×1

kotlin ×1

okhttp ×1