阅读时间:1 分钟
0 字
事件总线
这一页只讲应用内事件。
如果你要看长连接或流式连接,请直接跳到:
text
Socket => /uni/socket
SSE => /uni/sseuseEvent
用于主动发出一个业务事件,适合页面之间、模块之间做轻量通知。
ts
const event = useEvent<TPayload>(name)
event.emit(payload)ts
import { useEvent } from '@duxweb/uni'
const messageEvent = useEvent<{ id: string }>('chat.message')
messageEvent.emit({
id: '1001', // 主动广播消息事件
})useListener
用于监听业务事件,是最常用的事件消费入口。
ts
const { off } = useListener<TPayload>(name, handler, priority?)ts
import { useListener } from '@duxweb/uni'
useListener<{ id: string }>('chat.message', payload => {
console.log(payload?.id) // 监听并消费事件
})useListenerOnce
用于只消费一次事件,第一次触发后自动解绑。
ts
const { off } = useListenerOnce<TPayload>(name, handler, priority?)ts
useListenerOnce('chat.message', payload => {
console.log(payload) // 只接收一次,之后自动解绑
})useListenerOnly
用于注册唯一监听器,适合一个时刻只允许一个有效处理器的事件。
ts
const { off } = useListenerOnly<TPayload>(name, handler, priority?)ts
useListenerOnly('chat.message', payload => {
console.log(payload) // 同一时刻只允许一个有效监听器
}, 1000)什么时候用哪个
text
应用内广播 => useEvent / useListener
双向实时连接 => /uni/socket
服务端单向流 => /uni/sse