@coze/taro-api
Version:
Official Coze Taro SDK for seamless AI integration into your applications | 扣子官方 Taro SDK,助您轻松集成 AI 能力到应用中
40 lines (39 loc) • 1.08 kB
JavaScript
import { Events } from '@tarojs/taro';
import { EventName } from './types';
export class BaseEventSource {
events = new Events();
isClosed = false;
on(eventName, handler) {
this.events.on(eventName, handler);
return this;
}
off(eventName, handler) {
if (!eventName) {
this.events.off();
}
else if (!handler) {
this.events.off(eventName);
}
else {
this.events.off(eventName, handler);
}
return this;
}
trigger(eventName, args = {}) {
// Success/Fail should only fired once
if (this.isClosed &&
(eventName === EventName.Success || eventName === EventName.Fail)) {
return this;
}
if (eventName === EventName.Success || eventName === EventName.Fail) {
this.isClosed = true;
}
const msg = {
event: eventName,
data: args.data,
errMsg: args.errMsg,
};
this.events.trigger(eventName, msg);
return this;
}
}