Tag: 均衡器

Nodejscallback或eventEmitter

编写nodejs代码是最好的做法。 我目前的代码有太多的callback,并降低了可读性。 任何build议?

调用asynchronous函数只能在callbacknodejs中完成一次

我有代码,以某种方式接收100000数据集。 然后有一个存储必须被访问的方式,只有最后一个添加完成后,下一个可以开始。 以同步的方式,看起来像这样..所以添加方法会阻止。 var data = […]; //100000 datasets var syncstorage = require( 'syncstorage' ); // syncronous storage. for( var i = 0 ; i < data.length() ; i++ ) { syncstorage.add( data[i] ); // will only return once stored } asynchronous存储不阻止,但它会告诉你什么时候完成callback… /////// async storage asyncstorage.add( data[i] , function(err) { /* can only execute another […]

删除所有事件发布者侦听器,除了最新的

寻找find一种方法来删除除最近添加的侦听器之外的所有侦听器。 所以对于process.stdin,我们可以这样做 process.stdin.on('readable',function a(){}); process.stdin.on('readable',function b(){}); process.stdin.on('readable',function c(){}); 我想删除callbacka和b,但离开c。 但是,在这种情况下,我没有对a或b的引用,我想要做的是: while(process.stdin.listenerCount('readable') > 1){ process.stdin.removeListener('readable'); } 但我认为你需要传递一个函数。

调用事件发射器中的.emit()之前调用.on()是否存在计时问题?

取这个代码,其中f是一个具有事件“body”的stream,它使用m来调用监听器 – 这本身就是一个stream事件: f.on('message', function(m) { m.on('body', function(stream, info) { var b = ''; stream.on('data', function(d) { b += d; }); stream.on('end', function() { if (/^header/i.test(info.which)) msg.header = Imap.parseHeader(b); else msg.body = b; }); }); m.on('attributes', function(attrs) { msg.attrs = attrs; msg.contentType = partID[1]; }); }); f.on('end', function() { if (hadErr) return; cb(undefined, msg); }); […]

本地eventEmitter正在侦听全局eventEmitter

我几乎将问题标题写成 – 在事件发送器之间进行通信 我有一个node.js模块(X)在全局范围(它使用eventEmitter)。 然后我有每个套接字本地代码(用户连接)。 现在我通过全局variablesG = {'X':X}来携带X,以便套接字可以像这样访问X: GXon('someEvent',doSomething); 这是愚蠢的! 现在,每次我开始我的服务器似乎行为正常(我收到事件),但如果我刷新页面,并发出一个事件,我得到它两次。 如果我再次刷新页面,我会得到事件3次。 我认为我将监听器绑定到全局相同的eventEmitter。 我如何使一个单独的本地eventListener侦听全局eventEmiter的发射? 我知道如何设置一个eventEmiter: var events = require('events'); var ee = new events.EventEmitter(); ee.on('someEvent',function(){console.log('hello');}); 但它并没有赶上另一个事件… 我也尝试使用eventEmitter复制模块 var ee = GX; ee.on('someEvent',function() { console.log('hello'); }); 但它仍然收到一个事件的倍数。 hello hello hello

Node.js主 – 工通信。 师父发射一个事件,但只有一个工人听。 需要所有工作人员倾听

在下面的代码中,我有一个worker向master发送消息(通过process.send从一个不同的文件)告诉master通知所有的worker来执行一个函数,但是只有发送消息的worker才会执行这个函数。 我怎么能让所有的工人执行这个function? var listener = function() { doSomeThing; }; if (cluster.isMaster) { numCpu = require('os').cpus().length; for (var i = 0; i < numCpu; i += 1) { var worker = cluster.fork(); worker.on('message', function(msg)) { if(msg.fromWorker) { console.log('Worker(' + worker.id + ') to Master: ' + msg.fromWorker); worker.send({fromMaster: 'New instructions, immediately perform function.'}); eventEmitter.on('someThing', listener); } […]

node.js – 从对象发出事件

我在node.js中有以下模块: var obj = {}; obj.prop1 = "value1"; obj.prop2 = "value2"; asyncFunction(function(data) { obj.prop3 = data; // I would like to do: obj.emit("completed"); }); module.exports = obj; 所以我可以像这样导入它: var imp = require('./obj'); imp.on("completed", function() { console.log("Hello!"); }); 我该怎么做?

用__proto__混合EventEmitter方法

给定一个任意的对象,我想使它成为一个EventEmitter: var obj = {} // mixin eventemitter obj.on('event', …) obj.emit('event') 另外,当我键入obj时,我不希望它显示EventEmitter方法作为方法。 例如通过CLI: > obj {} 因此,现在我正在做: function mixinEventEmitter(obj) { obj.__proto__ = EventEmitter.prototype return obj } 但是人们说使用__proto__是一个反模式: Node.js – 从EventEmitterinheritance 我做得对吗? 你有更好的方式来做到这一点? 谢谢。

nodejs中的event.on()和event.once()之间的差异

我正在testingplus_one应用程序,并在运行时,我只是想澄清我的概念event.once()和event.on() 这是plus_one.js > process.stdin.resume(); process.stdin.on('data',function(data){ var number; try{ number=parseInt(data.toString(),10); number+=1; process.stdout.write(number+"\n"); } catch(err){ process.stderr.write(err.message+"\n"); } }); 这是test_plus_one.js var spawn=require('child_process').spawn; var child=spawn('node',['plus_one.js']); setInterval(function(){ var number=Math.floor(Math.random()*10000); child.stdin.write(number+"\n"); child.stdout.on('data',function(data){ console.log('child replied to '+number+' with '+data); }); },1000); 当使用child.stdin.on()时,我得到了一些maxlistener偏移警告,但是当使用child.stdin.once()时,情况并非如此,为什么会发生这种情况呢? 是否因为child.stdin正在监听之前的input? 但是在这种情况下,maxlistener偏移量应该更频繁地设置,但是它只能在一分钟内发生一次或两次。