等待同步函数中的异步结果



我需要在异步回调中返回一个值。这个值是作为 websocket 确认异步获取的,在检索到该值之前,我找不到阻止该回调执行的方法......我已经尝试了所有协程组合,但无济于事。

override fun someAsyncCallback() : String 
{
var myAsyncValue = ""
socket.emit(event = "someEvent", callback = { result ->
//This is an asynchronous callback
myAsyncValue = result
})
//Insert way to wait for the async value to be set 

return myAsyncValue
}

据推测,该函数是从可以阻止的线程调用的。您可以使用CountDownLatch来等待它。

override fun someAsyncCallback() : String 
{
var myAsyncValue = ""
val latch = CountDownLatch(1)
socket.emit(event = "someEvent", callback = { result ->
myAsyncValue = result
latch.countDown()
})
latch.await()

return myAsyncValue
}

还可以将超时传递给latch.await()方法,这样它就不会无限期地阻止。

最新更新