Skip to main content

EventEmitter

Trait EventEmitter 

Source
pub trait EventEmitter {
    // Required methods
    fn on(&self, event: &str, handler: Arc<dyn Fn(&[Value])>) -> u64;
    fn once(&self, event: &str, handler: Arc<dyn Fn(&[Value])>) -> u64;
    fn off(&self, event: &str, handler_id: u64) -> SubscriptionResult;
    fn remove_all_listeners(&self, event: Option<&str>);
    fn listener_count(&self, event: &str) -> usize;
    fn emit(&self, event: &str, args: &[Value]);
}
Expand description

EventEmitter trait — 高层 API 类共享接口。

所有实现必须是 !Send(单线程,servo JSContext 寄生约束)。

@trace REQ-BAO-API-006 [level:library]

Required Methods§

Source

fn on(&self, event: &str, handler: Arc<dyn Fn(&[Value])>) -> u64

注册持久 handler,返回 HandlerId(可用于 off)。

Source

fn once(&self, event: &str, handler: Arc<dyn Fn(&[Value])>) -> u64

注册一次性 handler(emit 后自动移除)。

Source

fn off(&self, event: &str, handler_id: u64) -> SubscriptionResult

按 ID 移除 handler。返回 NotFound 时表示 ID 不存在。

Source

fn remove_all_listeners(&self, event: Option<&str>)

移除指定事件的所有 handler;event=None 时清空所有事件的所有 handler。

Source

fn listener_count(&self, event: &str) -> usize

返回指定事件的 handler 数量。

Source

fn emit(&self, event: &str, args: &[Value])

同步触发事件,按注册顺序调用所有 handler。

once handler 在调用后立即从内部列表移除。

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§