我想在普通函数中调用阻止挂起函数,但不阻止线程完成挂起函数,然后返回Response
override fun intercept(chain: Interceptor.Chain): Response {
// getSession is a suspend function
val session = sessionProvider.getSession()
return chain.proceed(
chain
.request()
.newBuilder()
.addHeader("Authorization", "${session.token}")
.build()
)
}
答案 0 :(得分:3)
看来您正在实现OkHttp拦截器,所以我希望在后台线程上调用intercept()
。
如果是这样,use runBlocking()
:
override fun intercept(chain: Interceptor.Chain): Response {
// getSession is a suspend function
val session = runBlocking { sessionProvider.getSession() }
return chain.proceed(
chain
.request()
.newBuilder()
.addHeader("Authorization", "${session.token}")
.build()
)
}
runBlocking()
将执行suspend
函数,阻塞当前线程,直到工作完成。