UNPKG

@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
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; } }