我是第一次使用Kotlin。我可以用这两种方式调用api。它们之间有什么区别?
具有暂停功能。
interface RetrofitInterface {
@GET("/posts")
suspend fun getUserData(): Response<List<User>>
}
我将使用val result = apiCaller.getUserData()
调用我的api
使用Call〈〉对象
interface RetrofitInterface {
@GET("/posts")
fun getUserDataWithCall(): Call<User>
}
将通过
val result2 = apiCaller.getUserDataWithCall().enqueue(object :Callback<User>{
override fun onResponse(call: Call<User>, response: Response<User>) {}
override fun onFailure(call: Call<User>, t: Throwable) {}
})
2条答案
按热度按时间tjvv9vkg1#
suspend是coroutines关键字
9wbgstp72#
通过使用Call〈〉,你可以使Retrofit请求和响应异步--使用call.enqueue。这是最好的方法,因为网络调用可能会花费一段时间并阻塞主线程。
不使用
Call<>
:-在这种情况下,网络操作将在主线程上执行,这将导致阻塞主线程。因此,为了使网络调用异步,我们将其标记为挂起函数,以便在协程中同步使用时,主线程不会被阻塞。