美文网首页
Callback => Coroutine,使用Coroutin

Callback => Coroutine,使用Coroutin

作者: 周大侠侠侠侠侠侠侠侠侠侠侠侠侠 | 来源:发表于2021-03-15 15:40 被阅读0次
interface CoroutineCallback {
    fun onSuccess(num: Int)
    fun onFailure(e: Exception)
}

object CoroutineDemoUtils {
    fun getDemoData(callback: CoroutineCallback) {
        val num = Random.nextInt(0, 9)
        if (num >= 5) callback.onSuccess(num)
        else callback.onFailure(Exception("number > 5"))
    }
}

suspend fun getCoroutineDemoData(): Int =
    suspendCancellableCoroutine {
        CoroutineDemoUtils.getDemoData(object : CoroutineCallback {
            override fun onSuccess(num: Int) {
                it.resume(num)
            }

            override fun onFailure(e: Exception) {
                it.resumeWithException(e)
            }
        })
    }

相关文章

网友评论

      本文标题:Callback => Coroutine,使用Coroutin

      本文链接:https://www.haomeiwen.com/subject/uzmkcltx.html