CancellableContinuation

一个可取消的延续(Continuation),是连接传统回调式API与协程世界的安全桥梁。

它是一个线程安全的原语,支持协作式取消。当一个协程通过 CoroutineScope.cancellableDeferred 挂起时, 你会得到此接口的实例,用以在未来某个时刻手动恢复(resume)或取消(cancel)该协程。

这对于将任何基于回调的异步操作(如网络请求、数据库查询、事件监听器)适配为现代化的、 可链式调用的 Deferred 对象至关重要。

Parameters

T

此延续期望恢复的值的类型。

Functions

Link copied to clipboard
abstract fun cancel(cause: Throwable?): Boolean

尝试取消此延续,并可选择提供一个原因。

Link copied to clipboard
abstract fun invokeOnCancellation(handler: (Throwable?) -> Unit)

注册一个当此延续被取消时要执行的回调。

Link copied to clipboard
abstract fun isActive(): Boolean

检查此延续是否仍处于活动状态。

Link copied to clipboard
abstract fun isCancelled(): Boolean

检查此延续是否已经被取消。

Link copied to clipboard
abstract fun isCompleted(): Boolean

检查此延续是否已经完成。

Link copied to clipboard
abstract fun <R : T> resume(value: R, onCancellation: (cause: Throwable, value: R, context: CoroutineContext) -> Unit?)

以成功状态恢复协程,并提供一个结果值。

Link copied to clipboard
abstract fun resumeWithException(error: Throwable)

以失败状态恢复协程,并提供一个异常。