asFlow

expect abstract fun asFlow(): Flow<BaseEvent>

通过 Flow 接收此通道内的所有事件.

val eventChannel: EventChannel<BotEvent> = ...
val flow: Flow<BotEvent> = eventChannel.asFlow()

flow.collect { // it
//
}

flow.filterIsInstance<GroupMessageEvent>.collect { // it: GroupMessageEvent
// 处理事件 ...
}

flow.filterIsInstance<FriendMessageEvent>.collect { // it: FriendMessageEvent
// 处理事件 ...
}

类似于 SharedFlow, EventChannel.asFlow 返回的 Flow 永远都不会停止. 因此上述示例 Flow.collect 永远都不会正常 (以抛出异常之外的) 结束.

通过 asFlow 接收事件相当于通过 subscribeAlwaysEventPriority.MONITOR 监听事件.

注意: context, parentJob 等控制 EventChannel.defaultCoroutineContext 的操作对 asFlow 无效. 因为 asFlow 并不创建协程.

Since

2.12

See also

kotlinx.coroutines.flow.Flow
actual abstract fun asFlow(): Flow<BaseEvent>

通过 Flow 接收此通道内的所有事件.

val eventChannel: EventChannel<BotEvent> = ...
val flow: Flow<BotEvent> = eventChannel.asFlow()

flow.collect { // it
//
}

flow.filterIsInstance<GroupMessageEvent>.collect { // it: GroupMessageEvent
// 处理事件 ...
}

flow.filterIsInstance<FriendMessageEvent>.collect { // it: FriendMessageEvent
// 处理事件 ...
}

类似于 SharedFlow, EventChannel.asFlow 返回的 Flow 永远都不会停止. 因此上述示例 Flow.collect 永远都不会正常 (以抛出异常之外的) 结束.

通过 asFlow 接收事件相当于通过 subscribeAlwaysEventPriority.MONITOR 监听事件.

注意: context, parentJob 等控制 EventChannel.defaultCoroutineContext 的操作对 asFlow 无效. 因为 asFlow 并不创建协程.

Since

2.12

See also

kotlinx.coroutines.flow.Flow
Flow
actual abstract fun asFlow(): Flow<BaseEvent>

通过 Flow 接收此通道内的所有事件.

val eventChannel: EventChannel<BotEvent> = ...
val flow: Flow<BotEvent> = eventChannel.asFlow()

flow.collect { // it
//
}

flow.filterIsInstance<GroupMessageEvent>.collect { // it: GroupMessageEvent
// 处理事件 ...
}

flow.filterIsInstance<FriendMessageEvent>.collect { // it: FriendMessageEvent
// 处理事件 ...
}

类似于 SharedFlow, EventChannel.asFlow 返回的 Flow 永远都不会停止. 因此上述示例 Flow.collect 永远都不会正常 (以抛出异常之外的) 结束.

通过 asFlow 接收事件相当于通过 subscribeAlwaysEventPriority.MONITOR 监听事件.

注意: context, parentJob 等控制 EventChannel.defaultCoroutineContext 的操作对 asFlow 无效. 因为 asFlow 并不创建协程.

Since

2.12

See also

kotlinx.coroutines.flow.Flow