Tag: eventemitter

node.js eventemitter创build多个对象还是依赖于参数?

询问node.js中的eventemter 对于不同的事件,我应该在基础对象上创build新的发射器: forum.closeThread = new ee() forum.openThread = new ee() forum.openThread.on(threadID, foo) 或依靠论据来触发 forum.events.on('openThread', foo) forum.events.on('closeThread', bar) var bar = function (threadID) {…} 什么build议? 谢谢。

如何让类构造函数在nodejs中创build新实例时发出事件

我有一个类MyClass: var MyClass = function(){ events.EventEmitter.call(this); //… }; util.inherits(MyClass, EventEmitter); 我希望它每次创buildMyClass的新实例时发出一个“新”事件: myClassInstance = new MyClass(); // emit a 'new' event from MyClass, not myClassInstance 我想这样做,这样我就可以让观察者每创build一个MyClass的新实例就做一些事情。 例如: var MyClass = require('myclass'); MyClass.on('new', function(newInstance) { // do something with the new instance of MyClass }; 有没有办法做到这一点?

node.js事件发射器是否必须绑定到自定义对象才能有效地使用它们?

在node.js中,为什么事件发射器的一些例子看起来很简单: EventEmitter = require("events").EventEmitter; ee1 = new EventEmitter; 然后ee1被用来发送和收听事件。 还有一些例子是这样的: EventEmitter = require("events").EventEmitter; util = require("util"); MyFunc = function () EventEmitter.call(this); } util.inherit(MyFunc, EventEmitter); ee2 = new MyFunc(); 然后ee2被用来发射和听事件。 你可以使用ee1来处理所有的事件(无论你想要的地方,例如在你的自定义对象中)。 将事件发射器原型绑定到您自己的自定义对象/函数的原因是什么?

Javascript实例和这个

我在node.js中写了一个小工具,这是困扰我的部分: function Active(name, options, data){ events.EventEmitter.call(this); var that = this; that.name = name; that.options = options; that.data = data; that.getData(); that.on('ActiveStart', that.createLogFile); that.on('ActiveDone', that.removeLogFile); function callback() { that.emit('ActiveDone'); } var getData = function() { // starts other processes outside of the scope of this function // callback() gets passed around and called from outside function […]

node.js – Object#<Object>没有方法'on'?

我在node.js上很新 我正在休闲EventEmitter示例。 以下是我的示例代码。 var server = require('http'); //var emitter = require('events'); server.createServer(function (req, res) { res.writeHead(200, { 'Content-Type': 'text/plain' }); setTimeout(function () { res.end('World\n'); }, 2000); res.write('Hello '); }).listen(3000, 'localhost'); console.log('Server(port : 3000) is started.'); server.on('connection', function (stream) { console.log('Now server is connected.'); }); server.once('connection', function () { console.log('The first connection.'); }); var callback = […]

Node.js – 从另一个函数/对象发出一个事件

我正在挣扎近2小时,仍然没有得到它=(为了解释我得到了下面的代码。 var util = require('util'); var events = require('events').EventEmitter; function a (){ //this is my first function var b_obj = new b(); b_obj.on('event',function(){ console.log('Something happened!'); }); }; function b (){ //this is my second function events.call(this); this.emit('event'); }; util.inherits(b, events); a(); 所以我试图做的是:我有一个叫“a”的函数。 这个函数调用第二个称为“b”的函数。 该函数根据validation的结果validation一些数据并发出事件。 我发现,听众工作正常,事件正确发出。 但是,看起来事件是在函数b的上下文中发出的,而侦听器在函数a的上下文中工作。 为了进一步调查,我添加了以下行到函数b: this.on('event', function(){ console.log('event emitted!'); }); 这工作。 有谁能够帮助我? 我相信这个解决scheme非常简单。 […]

如何从另一个js文件发出一个事件?

这是EventEmitter的一个例子。 var events = require('events'); var emitter = new events.EventEmitter(); emitter.on('someEvent', function(arg1, arg2) { console.log('listener1', arg1, arg2); }); emitter.emit('someEvent', 'byvoid', 1991); 如何分离emitter.on()到另一个js文件?

EventEmitter事件处理程序的延期附件模式?

在事件已经生成之后,附加事件处理程序有一个看似众所周知的问题。 主要是在调用返回EventEmitter模式的函数时,这是一个问题,例如: var EventEmitter = require('events').EventEmitter; function doSomethingAsync() { var ev = new EventEmitter(), something = null; // Caller will never see this event because its // handler is bound after fact. if(!something) { ev.emit('error', 'Something is null!'); return ev; } return ev; } var res = doSomethingAsync(); res.on('error', function(s) { console.log('Error returned: ' + […]

有了Facebook的EventEmitter,有没有办法让迟到的听众收到已经发出的事件?

如果我有一个对象提取数据,它发出一个“就绪”的事件,但另一个对象开始监听该事件已经被触发后,有一个直接的方法,让这个监听器接收错过的事件。 纯粹假设的例子(所以请不要问为什么我会这样做): function DataModule(){ this.data = null; request.get( 'http://example.com/api/get/data', function( error, response, body ) { if ( ! err ) { this.data = body; this.emit( 'ready' ); } }.bind( this ) ); } … var dataModule = new DataModule(); // data fetching happens here. setTimeout( function(){ dataModule.once( 'ready', function(){ // Perform some action when the […]

不能实例化导出的自定义模块Nodejs的实例,它扩展了EventEmitter

社区。 我不能实例化导出的自定义模块Nodejs的实例。 我有2个文件:一个自定义testing模块“resource.js”和“ext-emitter.js” 在resource.js中创buildResource类,并从EventEmitter类扩展它。 // resource.js var util = require("util"); var eventEmitterInstance = require("events").EventEmitter; function Resource(m){ this.maxEvents = m; var self = this; process.nextTick(function() { var count = 0; self.emit('start'); var t = setInterval(function(){ self.emit('data', ++count); if (count === m) { self.emit('end', count); clearInterval(t); } }, 10); }); } util.inherits(Resource, eventEmitterInstance); module.exports = Resource(); 然后我导入上面的模块在下一个文件ext-emitter.js我尝试实例化扩展自定义模块资源()(它依次扩展EventEmitter类),但我得到一个错误:“资源”未定义“ […]