Tag: eventemitter

捕获不同模块中的事件

我在我的节点应用程序中的一些模块中创build事件,我想在其他模块中捕获此事件,我尝试以下不工作 提高事件的模块 EventEmitter = require("events").EventEmitter; function updatePort(port) { … var ee = new EventEmitter(); ee.emit("AppDef"); } 现在我想在不同的模块中捕获这个事件并将其打印到控制台 EventEmitter = require("events").EventEmitter; var ee = new EventEmitter(); ee.on("AppDef", function () { console.log('Port is defiend ' + port); }) 我认为问题是我做了两次,但不知道如何克服这个新的…

使用Node.js的EventEmitter没有子类

是否有可能在两个不同的文件中使用Node.js EventEmitter,而无需inheritanceEventEmitter? 我试过这个: File1.js var EventEmitter = require('events').EventEmitter; var emitter = new EventEmitter(); emitter.emit('eventFromFile1'); File2.js var EventEmitter = require('events').EventEmitter; var emitter = new EventEmitter(); emitter.on('eventFromFile1', function(){ console.log('Received event'); // Never happens }); 这不起作用。 我想这是因为事件发生器的两个实例存在,他们没有连接。 如果没有inheritanceEventEmitter,我可以实现类似的行为吗? (我是Node.js的新手)

TypeError:侦听器必须是一个函数

我正在一个WeakMap中存储一个事件监听器,并检索到从EventEmitter中删除它的函数,这个错误被抛出: TypeError:侦听器必须是一个函数 我无法弄清楚问题所在: var EventEmitter = require('events').EventEmitter; var listeners = new WeakMap(); var eventEmitterA = new EventEmitter(); var eventEmitterB = new EventEmitter(); eventEmitterA.on('open', (obj) => { function stuff() { /* … */ } listeners.set(obj, stuff); eventEmitterB.on('stuff', stuff); }); eventEmitterA.on('close', (obj) => { var listener = listeners.get(obj); console.log(typeof listener); // logs "function" eventEmitterB.removeListener(listener); }); var someObject […]

NodeJS EventEmitter没有启动

我正在处理一个类WorkflowParent ,它既是一个EventEmitter ,又具有EventEmittertypes的子属性。 我希望这个类从它的子属性中截取一些事件,并用不同的事件名称重新发射它们。 看来我正在做对,但它不工作。 这是我的代码: var _ = require('lodash'); var EventEmitter = require('events').EventEmitter; var awsswf = require('aws-swf'); var swf = awsswf.createClient(); var util = require('util'); function WorkflowParent(){ EventEmitter.call(this); var me = this; //Create decider object me.decider = new awsswf.Decider({}); // <—- THIS IS AN EventEmitter //Emit events from `decider` and `actor` objects ['poll'].forEach(function(eventName){ me.decider.on(eventName, […]

nodejs事件 – EventEmitter – 理解类实例

我正在实例化一个事件发射器,并注意到这两行似乎工作正常。 任何人都可以澄清这两种方法之间的权衡或差异导入和实例化EventEmitter类? 1: var eventEmitter = new (require('events')).EventEmitter(); 2: var eventEmitter = new (require('events').EventEmitter)(); 我的拿: 在1中, (require('events'))应该返回events模块的输出。 然后.EventEmitter()引用那个类和new创build一个EventEmitter的新实例。 2, (require('events').EventEmitter) should return the exported EventEmitter class. Then (require('events').EventEmitter) should return the exported EventEmitter class. Then new …() creates a new instance of EventEmitter creates a new instance of 。

Nodejs事件被多次发射

export function postComment(req, res) { const user = decodeToken(req); let saveComment, saveJob, saveUser, activity, jobUser; function pushToJob(comment) { saveComment = comment; Job.findById(req.params.id) .then((data) => { job = data; data.comments.push(saveComment._id) return data.save() }).catch((err) => { throw new Error(`The error at pushing to job is ${err}`) }) } function updateCommentWithJobId(job) { saveComment.jobId = { _id: job._id, title: […]

NodeJS EventEmitter中事件的发送者

在一个支持多个subprocess的NodeJS应用程序中,我需要知道subprocess何时退出,问题是由EventEmitter调用的callback函数没有事件的发送者。 我做了很多的.NET开发,他们的事件总是有sender参数和arguments参数。 我怎么知道哪个subprocess发送了事件? 我可以做类似的事情 const childProcess = fork(…) childProcess.on('exit', function(code, signal) { myCallback(childProcess, code, signal); } 但后来我不能从这个特定的事件处理程序注销。

用一个事件桥接两个事件监听器

我试图“桥接”两个事件监听器,以触发他们与一个单一的事件。 而且,在这个“链”中,我可以将更多的值作为参数传给后面的听众。 我试图通过如下实现它 var events = require('events'); var receiv = new events.EventEmitter(); var midl = new events.EventEmitter(); receiv.on("test", function() { console.log("HERE", arguments); }); midl.on("test", receiv.on.bind(receiv, "test", "foo", "bar")); midl.emit("test", 123); 然而,这种方法似乎错误的EventEmitter,因为我得到以下错误 TypeError: listener must be a function at TypeError (<anonymous>) at EventEmitter.addListener (events.js:130:11) at EventEmitter.emit (events.js:95:17) at Object.<anonymous> (myEventTest.js:12:6) at Module._compile (module.js:456:26) at Object.Module._extensions..js (module.js:474:10) […]

如何在node.js事件监听器中获取事件名称?

我为一些事件dynamic创build事件监听器。 在那个事件监听器,我想做另一个基于事件名称的发出调用,所以我想获得事件监听器名称 我正在使用node.js eventemitter。 var events = require('events').EventEmitter; var util = require('util'); ….. ….. for(i in events) { transport.on(events[i],function(userId) { eventName = events[i]; var acct = accountsList[userId]; if(acct) { acct.emit(events[i],userId); } }); } 上面的方法正在工作,但问题的线是 acct.emit(events[i],userId); 事件[i]具有循环的最后一个值。 所以如果收到任何事件它总是发出事件[我]值的最后一个循环…

Nodejs模块中的作用域问题

我刚刚开始与节点,我被卡住pipe理“回拨地狱”。 我已经成功地设法使用Event发射器来从模块中激发主要js文件中的事件,但我无法弄清楚如何在模块中的callback中使用范围从事件触发事件。 此外,我在调用模块中的callback函数时遇到问题。 具体来说,这里: rows.forEach(function(thisRow, index, array) { myDb.query("SELECT COUNT(a.studentID) as total, m.fName, m.lName, m.id " + "from `absences` a join `members` m on a.studentID = m.id " + "where a.aDate>=" + myDb.escape(thisRow['beginDate']) + " and " + "a.aDate<=" + myDb.escape(thisRow['endDate']) + " and a.aDate<'" + today + "' and m.memGroup = " + myDb.escape(thisRow['orchName']) […]