selectMessages

inline suspend fun <T : MessageEvent, R> T.selectMessages(    timeoutMillis: Long = -1,     filterContext: Boolean = true,     priority: EventPriority = EventPriority.MONITOR,     crossinline selectBuilder: MessageSelectBuilder<T, R>.() -> Unit): R

挂起当前协程, 等待任意一个事件监听器触发后返回其返回值.

创建的所有事件监听器都会判断发送人信息 (isContextIdenticalWith), 监听之后的所有消息.

selectBuilder DSL 类似于 EventChannel.subscribeMessages 的 DSL, 屏蔽了一些 reply DSL 以确保类型安全

val value: String = selectMessages {
"hello" { "111" }
"hi" { "222" }
startsWith("/") { it }
default { "default" }
}

See also

挂起协程并等待下一条消息

Parameters

timeoutMillis

超时. 单位为毫秒. -1 为不限制