ProducerScope

一个用于从多值回调或监听器 API 创建 Flow 的生产者接口。

当你调用 Flows.fromCallback 时,你会得到这个接口的实例。它本身就是一个 CoroutineScope, 允许你在其上下文中启动新的协程来处理事件和发送数据。

Parameters

T

生产者可以发送(produce)的值的类型。

Functions

Link copied to clipboard
abstract fun <T> _async(contextBuilder: CoroutineContext.() -> Unit?, start: (CoroutineStarts) -> CoroutineStart?, block: CoroutineScope.() -> T): Deferred<T>

async 的备用名称,用于避免在某些脚本语言中与 async 关键字冲突。 功能与 async 完全相同。

Link copied to clipboard
abstract fun also(block: (ERROR CLASS: Symbol not found for kotlinx.coroutines.CoroutineScope) -> Unit): ObjectWrapper<ERROR CLASS: Symbol not found for kotlinx.coroutines.CoroutineScope>

对 ObjectWrapper 调用给定的 block 函数,并返回 ObjectWrapper 本身。

Link copied to clipboard
abstract fun apply(block: ERROR CLASS: Symbol not found for kotlinx.coroutines.CoroutineScope.() -> Unit): ObjectWrapper<ERROR CLASS: Symbol not found for kotlinx.coroutines.CoroutineScope>

对 ObjectWrapper 调用给定的 block 函数,并返回 ObjectWrapper 本身。

Link copied to clipboard
abstract fun <T> async(contextBuilder: CoroutineContext.() -> Unit?, start: (CoroutineStarts) -> CoroutineStart?, block: CoroutineScope.() -> T): Deferred<T>

在此作用域内启动一个新的协程,并返回一个 Deferred 对象,该对象最终将持有计算结果。

Link copied to clipboard
abstract fun <T> awaitAll(deferredList: List<Deferred<T>>): Deferred<List<T>>

等待一组类型相同Deferred 对象全部成功完成,并返回一个包含所有结果的类型安全列表。

Link copied to clipboard
abstract fun awaitClose(handler: () -> Unit)

注册一个清理回调。当 Flow 的收集被取消或 Flow 正常关闭时,此回调将被执行。

Link copied to clipboard
abstract fun cancel(message: String?)

取消此作用域,这将立即取消其所有子协程。

Link copied to clipboard

创建一个 Deferred,它会挂起直到你手动通过提供的 CancellableContinuation 来恢复它。

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

手动关闭此生产者,并可选择提供一个原因。

Link copied to clipboard
abstract fun delay(timeMillis: Long): Deferred<Unit>

返回一个在指定的延迟时间后完成的 Deferred

Link copied to clipboard
abstract fun getContext(): ScriptContext

获取脚本上下文对象 ScriptContext.

Link copied to clipboard
abstract fun getOrigin(): ERROR CLASS: Symbol not found for kotlinx.coroutines.CoroutineScope

获取原始的对象.

Link copied to clipboard
abstract fun isActive(): Boolean

检查此作用域是否仍然处于活动状态(即未被取消且未完成)。

Link copied to clipboard
abstract fun isClosedForSend(): Boolean

当前通道是否已关闭发送端

Link copied to clipboard
abstract fun joinAll(jobs: List<Job>): Deferred<Unit>

挂起直到指定列表中的所有 Job 都完成(无论是成功、失败还是被取消)。

Link copied to clipboard
abstract fun launch(contextBuilder: CoroutineContext.() -> Unit?, start: (CoroutineStarts) -> CoroutineStart?, block: CoroutineScope.() -> Unit): Job

在此作用域内启动一个新的协程,而不会阻塞当前线程。

Link copied to clipboard
abstract fun <R> let(block: (ERROR CLASS: Symbol not found for kotlinx.coroutines.CoroutineScope) -> R): ObjectWrapper<R>?

对 ObjectWrapper 调用给定的 block 函数,并返回 block 函数的结果包装在 ObjectWrapper 中。

Link copied to clipboard
abstract fun loop(body: (CoroutineScope) -> Deferred<Boolean>): Deferred<Unit>

异步地执行一个顺序循环,其中每次迭代自身是一个异步操作,并返回一个布尔值来决定是否继续循环。

Link copied to clipboard
abstract fun <T> reject(error: Throwable): Deferred<T>

创建一个已经以给定异常失败的 Deferred 对象。

Link copied to clipboard
abstract fun <T> resolve(value: T): Deferred<T>

创建一个已经以给定值成功完成的 Deferred 对象。

Link copied to clipboard
abstract fun <R> run(block: ERROR CLASS: Symbol not found for kotlinx.coroutines.CoroutineScope.() -> R): ObjectWrapper<R>?

对 ObjectWrapper 调用给定的 block 函数,并返回 block 函数的结果包装在 ObjectWrapper 中。

Link copied to clipboard
abstract fun send(scope: CoroutineScope, value: T): Deferred<Unit>

异步地向通道发送一个元素,并在必要时挂起。

Link copied to clipboard
abstract fun setOrigin(origin: ERROR CLASS: Symbol not found for kotlinx.coroutines.CoroutineScope)

设置原始对象

Link copied to clipboard
abstract fun takeIf(predicate: (ERROR CLASS: Symbol not found for kotlinx.coroutines.CoroutineScope) -> Boolean): ObjectWrapper<ERROR CLASS: Symbol not found for kotlinx.coroutines.CoroutineScope>?

如果 ObjectWrapper 满足给定的 predicate,则返回 ObjectWrapper 本身,否则返回 null 包装在 ObjectWrapper? 中。

Link copied to clipboard
abstract fun takeUnless(predicate: (ERROR CLASS: Symbol not found for kotlinx.coroutines.CoroutineScope) -> Boolean): ObjectWrapper<ERROR CLASS: Symbol not found for kotlinx.coroutines.CoroutineScope>?

如果 ObjectWrapper 不满足给定的 predicate,则返回 ObjectWrapper 本身,否则返回 null 包装在 ObjectWrapper? 中。

Link copied to clipboard
abstract fun trySend(element: T): ChannelResult<Unit>

尝试立即向通道发送一个元素,不会挂起。

Link copied to clipboard
abstract fun <T> withContext(contextBuilder: CoroutineContext.() -> Unit, block: CoroutineScope.() -> T): Deferred<T>

切换协程的上下文,在新的上下文中执行指定的代码块,然后返回一个持有结果的 Deferred

Link copied to clipboard
abstract fun <T> withTimeout(timeoutMillis: Long, block: CoroutineScope.() -> T): Deferred<T>

在指定的超时时间内运行代码块。如果超时,返回的 Deferred 将会因 TimeoutCancellationException 而失败。

Link copied to clipboard
abstract fun <T> withTimeoutOrNull(timeoutMillis: Long, block: CoroutineScope.() -> T): Deferred<T?>

在指定的超时时间内运行代码块。如果超时,返回的 Deferred 将成功地持有一个 null 值,而不是抛出异常。