Skip to content

createEvent() ​

创建一个 frozen、opaque、typed Engine Event token。

签名 ​

ts
function createEvent<TPayload = void>(name: string): EngineEvent<TPayload>;

用法 ​

ts
const selectionChanged = createEvent<Entity | null>('selection-changed');

const off = engine.onEvent(selectionChanged, (entity) => {
  console.log(entity);
});

engine.emitEvent(selectionChanged, selectedEntity);
off();

void Event 不需要 payload:

ts
const reset = createEvent('reset');
engine.emitEvent(reset);

name 只用于诊断;token 的 object identity 是唯一频道事实,同名 Event 互不相同。dispatch 同步、registration-order、fail-fast。

SystemContext 与 ScriptContext 也提供 onEvent/onceEvent/emitEvent,订阅会受 owner effective gate 控制并随 owner 释放。

相关 ​

基于 MIT 协议发布(内部使用)