如何在外部js文件中触发事件?

时间:2017-10-26 08:56:34

标签: javascript node.js eventemitter

这是 app.js 文件;

Static Text

Package.json 文件。 (in)./ testApp /package.json;

SELECT s.*, u.* 
    FROM surveys s
    LEFT JOIN survey_user_relation u
    ON u.survey_id = s.id AND u.user_id = 2;

这是./testApp/ main.js 文件;

const MyTest = require('./testApp');
const App = new MyTest();

App.on('ready', () => {
    console.log('Hello World');
});

如果在App.js文件中成功安装了“App”,我希望控制台编写“Hello World”。我已经改变了几次这个内容,因为我想要更简单。

我想在./testApp/ma​​in.js

app.js 中触发App.on

如果我在构造函数中定义一个函数,我可以通过调用“App”来获取它。在这种情况下, = 应用

然后,为什么不发射任何东西?

注意:此应用文件在本地工作。

1 个答案:

答案 0 :(得分:0)

emit调用位于Client的构造函数中,即调用时调用

const helper = new pulseHelper.Client();

但是,之后只注册ready处理程序。 EventEmitters不会缓冲他们的活动;只有在emit电话会议期间注册的听众才能对事件采取行动。

编辑:澄清我正在谈论的内容,请参阅此示例:

const EventEmitter = require('events');

class Client extends EventEmitter {
  constructor() {
    super();
    this.emit('ready', 'I\'m Ready!');
  }
  boom() {
    this.emit('ready', 'Boom!');    
  }
  emit(event, payload) {
    console.log('Emitting', event, ':', payload);
    super.emit(event, payload);
  }
}

const c = new Client();
c.on('ready', (payload) => console.log(payload));
c.boom();

打印(带注释):

# client constructed, it emits an event but no one is listening.
# however the "debug" emit() implementation prints this:
Emitting ready : I'm Ready!
# the listener has been registered, now let's call .boom()!
# the "debug" emit() implementation prints this:
Emitting ready : Boom!
# and the handler prints the following:
Boom!