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§
Sourcefn on(&self, event: &str, handler: Arc<dyn Fn(&[Value])>) -> u64
fn on(&self, event: &str, handler: Arc<dyn Fn(&[Value])>) -> u64
注册持久 handler,返回 HandlerId(可用于 off)。
Sourcefn off(&self, event: &str, handler_id: u64) -> SubscriptionResult
fn off(&self, event: &str, handler_id: u64) -> SubscriptionResult
按 ID 移除 handler。返回 NotFound 时表示 ID 不存在。
Sourcefn remove_all_listeners(&self, event: Option<&str>)
fn remove_all_listeners(&self, event: Option<&str>)
移除指定事件的所有 handler;event=None 时清空所有事件的所有 handler。
Sourcefn listener_count(&self, event: &str) -> usize
fn listener_count(&self, event: &str) -> usize
返回指定事件的 handler 数量。
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".