@SinceMirai("0.39.0") inline fun <reified E : Event, R : Any> CoroutineScope.asyncFromEventOrNull(timeoutMillis: Long, coroutineContext: CoroutineContext = EmptyCoroutineContext, crossinline mapper: suspend E.(E) -> R?): Deferred<R?>
异步监听这个事件, 并尝试从这个事件中获取一个值.
若 mapper 抛出的异常将会被传递给 Deferred.await 抛出.
timeoutMillis
- 超时. 单位为毫秒. -1
为不限制
coroutineContext
- 额外的 CoroutineContext
mapper
- 过滤转换器. 返回非 null
则代表得到了需要的值. syncFromEvent 会返回这个值