美文网首页
Android使用suspendCancellableCorou

Android使用suspendCancellableCorou

作者: Ello_Orld | 来源:发表于2021-03-03 21:48 被阅读0次

普通的回调函数:

interface Result<T> {
    fun onSuccess(t: T)
    fun onFailed(e: Exception)
}

回调方法,模拟耗时操作

  fun longTimeMethod(result: Result<String>) {
        thread {
            Thread.sleep(5000)
            if (System.currentTimeMillis() % 10 > 6) {
                result.onSuccess("${System.currentTimeMillis()}")
            } else {
                result.onFailed(Exception("FAILED"))
            }
        }
    }

去掉回调,转换为挂起函数:

 suspend fun getResult(): String =
        suspendCancellableCoroutine {
            longTimeMethod(object : Result<String> {
                override fun onSuccess(t: String) {
                    if (it.isCancelled) return
                    it.resume(t)
                }

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

            })
        }

相关文章

网友评论

      本文标题:Android使用suspendCancellableCorou

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