- public interface Continuation<in T> {
- public val context: CoroutineContext
- public fun resumeWith(result: Result<T>)
- }
Continuation 的成员:
- suspend fun request() = suspendCoroutine
{ - val response = doRequest()
- it.resume(response)
- }
-
- fun test() = runBlocking {
- val response = request()
- handle(response)
- }
用下面的伪代码简单描述 Continuation 的工作:
- interface Continuation<T> {
- fun resume(t: T)
- }
-
- fun request(continuation: Continuation<Response>) {
- val response = doRequest()
- continuation.resume(response)
- }
-
- fun test() {
- request(object :Continuation
{ - override fun resume(response: Response) {
- handle(response)
- }
- })
- }
fun (suspend () -> T).createCoroutine(completion: Continuation): Continuation<Unit>