给 Controller、Service、Endpoint 等类注入同步事件的 API
因为 grails.events.Events 只支持异步事件,所以这里添加相应的同步事件API。
常见使用方法参考 Events 中的注释,只是每个 API 带有后缀 “Sync”。
| Type | Name and description |
|---|---|
boolean |
clearSyncEventConsumers(CharSequence key)清理所有监听器 |
reactor.bus.Bus |
notifySync(CharSequence key, Object data)发布事件 |
reactor.bus.registry.Registration<Object, reactor.fn.Consumer> |
onSync(CharSequence key, Closure closure)监听事件,包括通过 notifySync、sendAndReceiveSync、sendAndReceiveAllSync 等方法发布的事件 |
void |
receiveAllSync(CharSequence key, Closure callback)监听通过 sendAndReceiveAllSync 发布的事件,并返回值,供发布者使用 |
reactor.bus.Bus |
sendAndReceiveAllSync(CharSequence key, Object data, Closure callback)发布事件,并获得所有监听器的返回结果 |
reactor.bus.Bus |
sendAndReceiveSync(CharSequence key, Object data, Closure callback)发布事件,并获得第一个调用 receiveSync 的监听器的返回值 |
清理所有监听器
发布事件
监听事件,包括通过 notifySync、sendAndReceiveSync、sendAndReceiveAllSync 等方法发布的事件
监听通过 sendAndReceiveAllSync 发布的事件,并返回值,供发布者使用
发布事件,并获得所有监听器的返回结果
本事件也可以被 onSync 监听到,此时 callback 会接收到单条返回值。
因此,应该用 receiveAllSync 来监听事件,闭包 callback 可以接收到所有监听器的返回值列表。
如果没有监听器,那么也不会执行回调闭包 callback。
发布事件,并获得第一个调用 receiveSync 的监听器的返回值
callback - 处理返回值的闭包