1/* 2 * Copyright (c) 2021-2023 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15let eventMap = new Map<string, Function[]>(); 16 17export const emit = (event: string, ...argument: ESObject[]) => { 18 if (Array.isArray(eventMap[event])) { 19 eventMap[event].forEach((fn: Function) => { 20 fn(...argument) 21 }) 22 } 23} 24 25export const on = (event: string, callback: Function) => { 26 if (!eventMap[event]) { 27 eventMap[event] = [] 28 } 29 eventMap[event].push(callback) 30} 31 32export const off = (event: string, callback: Function, flag = true) => { 33 if (flag) { 34 const index: number = eventMap[event].indexOf((item: Function) => item === callback) 35 if (index !== -1) { 36 eventMap[event].splice(index, 1) 37 } 38 } else { 39 eventMap[event] = [] 40 } 41}