【问题标题】:Node.js listen and emmit eventsNode.js 监听和发送事件
【发布时间】:2017-08-18 10:19:32
【问题描述】:

我有两个课程,我希望一个课程订阅另一个课程。所以 像这样的。

第一课:

while(1){ if(true){ //emmit some event }

二班:

//wait for class one to emmit some data ,and then start working with the data

我的问题是,是否有任何方法、模块..可以帮助我实现这种行为?

【问题讨论】:

  • 有什么问题?
  • 我认为您实际上指的是线程而不是类,类是对象模板,node.js 是单线程的,它是异步的,因此您可以创建所需的功能,但不能在像这样的while循环,你必须将执行释放回节点,否则节点的异步部分无法工作。
  • @tbking 编辑了我的帖子,抱歉
  • @SPlatten 我可以删除 while 循环,这只是一个示例。我只需要有人向我推荐一些可以实现我所要求的模块。
  • EventEmitter继承。

标签: javascript node.js rxjs observable eventemitter


【解决方案1】:

使用 Node 的内置 EventEmitter 在两个客户端中实现发射和监听事件。

例子:

const EventEmitter = require('events');

class MyEmitter extends EventEmitter {}

const myEmitter = new MyEmitter();
myEmitter.on('event', () => {
   console.log('an event occurred!');
});
myEmitter.emit('event');

【讨论】:

  • 我有 1 个函数可以检查 sql 库并返回 true、false。我需要在哪里调用该函数?
  • 在该函数的回调中,调用myEmitter.emit('SQL_RESULT');。在文件中定义 myEmitter 并导入。
【解决方案2】:

默认类 EventEmitter 将满足您的要求。

const myEmitter = new MyEmitter();

// Listen to event
myEmitter.on('event', (data) => {
  console.log(data);
});

// Emit event
myEmitter.emit('event', data);

【讨论】:

    猜你喜欢
    • 2020-06-24
    • 2018-05-16
    • 2011-07-07
    • 1970-01-01
    • 1970-01-01
    • 2018-09-24
    • 2011-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多