【发布时间】:2020-06-16 17:25:08
【问题描述】:
我是新的 android 开发人员,我如何从这个 sn-p 中获取结果,存在什么方式,因为它不返回任何内容,因为我在 onResponse 中添加元素,但只使用 kotlin 模块:
private fun foo(list: ArrayList<CurrencyModel> = ArrayList()): ArrayList<CurrencyModel> {
val request = Request.Builder().url(BASE_URL_YESTERDAY).build()
val client = OkHttpClient()
client.newCall(request).enqueue(object : Callback {
override fun onFailure(call: Call, e: IOException) {
}
override fun onResponse(call: Call, response: Response) {
val body = response.body?.string()
val data = Gson().fromJson(body, Currencies::class.java)
list.add(CurrencyModel("USD", data.rates.USD, 0.0))
list.add(CurrencyModel("SEK", data.rates.SEK, 0.0))
list.add(CurrencyModel("EUR", data.rates.EUR, 0.0))
}
})
return list
}
}
【问题讨论】:
-
您不能从调用它的函数返回异步调用的结果,因为结果会在该函数已经返回之后的某个时间出现。你可以把它变成一个挂起函数并从协程中调用它,或者你可以给这个函数一个回调参数,它将在
onResponse中调用,你调用这个函数的代码可以响应回调中的结果。 -
@Tenfour04 谢谢你的回答。你能举个例子吗?那会很酷
-
我觉得我以前在这里回答过这个问题,但我找不到它。等一下。