【发布时间】:2020-11-10 05:53:08
【问题描述】:
我想在函数中运行一堆代码 - 以及在这些函数中调用的函数,并在没有太多工作的情况下“冒泡”事件。
注意:我正在尝试远离 OOP,更多地转向函数式编程,因此我不能使用类实现事件发射器。我不确定我是否必须这样做
- 从每个对象公开事件发射器 - 或
- 如果我可以从内部函数之一发出并监视外部函数中的事件 - 或
- 甚至只是将发射器作为函数参数传递。
obj2.ts
import {EventEmitter} from 'events'
export async function obj2(){
const ev = new EventEmitter()
ev.emit('test','Yahoo!')
await new Promise(r => setTimeout(r, 2000));
ev.emit('test2','Yahoo! - second time')
ev.emit('test','Yahoo!')
await new Promise(r => setTimeout(r, 10000));
ev.emit('test2','Yahoo! - third time')
}
obj1.ts
import {EventEmitter} from 'events'
import { inherits } from 'util'
import {obj2} from './obj2'
async function obj1(){
await obj2()
}
inherits(obj1, EventEmitter)
export {obj1}
index.js(入口点)
import {obj1} from './obj1'
obj1.on('test', () => { // << this doesn't work obviously
//console.log(this)
console.log('**')
})
obj1()
【问题讨论】:
标签: node.js eventemitter