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" }
}

Parameters

timeoutMillis

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

See also

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