【问题标题】:How to handle asynchronicity on Android Java?如何处理 Android Java 上的异步?
【发布时间】:2021-05-28 14:42:04
【问题描述】:

我正在使用 OkHttp 向服务器发送 REST 请求,并且响应是异步返回的。由于 Java 主要是一种服务器端语言,因此处理异步返回的概念对我来说是模糊的。

例如,我要发送3个请求A、B和C。收到它们的全部3个返回后,我将在移动应用程序上执行操作D。

我用这样的回调做到了:

do {
    run A asynchronously; A returns;
        -> run B asynchronously; B returns 
             -> run C asynchronously; C returns 
                 -> run D synchronously;
}

可视化:应该是这样的:

do {
    run A asynchronously;
    run B asynchronously;
    run C asynchronously;
}
await (A, B, C all returned) {
    run D synchronously;
}

我该如何像上面那样在 Javascript 上等待?

【问题讨论】:

  • 不同的(额外的)框架使这种类型的事情变得更加可能,我不确定你是否可以只使用 Okhttp 来实现这一点,但是使用 Rxjava 你可以压缩这些操作

标签: java android asynchronous callback


【解决方案1】:

我正在使用Retrofit,它使用OkHttp 使用协程怎么样?像这样的方法?

GlobalScope.launch{
 responseA = async{ getAsynch1() }
 responseB = async{ getAsynch2() }
 responseC  = async{ getAsynch3() }
 handleResponseA(responseA.await())
 handleResponseB(responseB.await())
 handleResponseC(responseC.await())
}

参考:链接https://proandroiddev.com/suspend-what-youre-doing-retrofit-has-now-coroutines-support-c65bd09ba067

【讨论】:

  • 如果 OP 使用的是 java 就没有帮助,他们说他们是
猜你喜欢
  • 2017-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-10
  • 1970-01-01
  • 1970-01-01
  • 2012-01-12
  • 1970-01-01
相关资源
最近更新 更多