如何从非协程世界启动当前线程上的Kotlin协程?

ruarlubt  于 2023-05-07  发布在  Kotlin
关注(0)|答案(1)|浏览(207)

我有一个函数:

fun login(..., cb:Callback){ // this function is invoked from non-coroutine world
    // 1)  current Thread "workThread"
    scope.launch { // I have tried all Dispathers to create the scope, but cannot achieve what i want
        // 2) i want current Thread still "workThread"
        withContext(Dispatchers.IO){
            // do something
        }
        // 3) i want resume executing on "workThread"
        cb.callback(...)
    }
}

我所尝试的和我想要的都在评论中详细记录了。那么我怎样才能做到呢?先谢谢你了。

vd2z7a6w

vd2z7a6w1#

要在当前线程上启动协程,请使用runBlocking函数:

fun login(..., cb:Callback){ // this function is invoked from non-coroutine world
    // 1)  current Thread "workThread"
    runBlocking {
        // 2) i want current Thread still "workThread"
        withContext(Dispatchers.IO){
            // do something
        }
        // 3) i want resume executing on "workThread"
        cb.callback(...)
    }
}

相关问题