Tag: 事件

unit testing事件驱动的JavaScript

我在用node.js编写一个服务器端应用程序,并希望包含unit testing。 我正在努力的一件事是unit testingEventEmitter和setInterval/setTimout的好方法 我有什么selectunit testingasynchronous服务器端JavaScript? 我知道我可以将另一个侦听器附加到作为testingfunction的EventEmitter,但是我怎样才能让testing函数运行? 部分unit testing是为了确保unit testing的每个部分都运行。 我可以自己使用setTimeout,但这似乎是一个黑客的解决scheme。 如果这有帮助,那么我试图testing一些exampler代码。 … function init(param) { … // run update entities periodically setInterval(this._updateEntities.bind(this, param.containerFull), 1000 / param.fps); … } … EntityUpdater.prototype = { … "_updateEntities": function updateEntitiesfunc(fn) { this._tickEmitter.emit( "tick", new dataContainer.DataContainer(this.getEntityCount()) .on( "full", fn.bind(this) ) ); }, … } … (发射会触发一个事件) [编辑] 我开始阅读一些EvevntEmittertestinghttps://github.com/ry/node/tree/master/test/simple ,这有助于我看到如何去做这件事。

我如何让nodejs服务器监听AWS SQS?

在详细解释问题之前,我先告诉你我目前的做法。 我有一个运行setInterval()的js脚本。 和每个间隔,我将调用SQS从队列中获取消息。 如果有消息,我就处理它。 所以,它会无限地运行,直到我杀了这个过程。 我之前也build立了一个节点服务器(使用nodejs.org中的例子) 所以,我想知道的是,而不是定期运行setInterval。 有没有办法,如果SQS中有一条新消息,那么它会触发一个事件并处理消息?

当我的函数完成时用javascript(或jquery)触发一个自定义事件

而不是在JS中嵌套callback,我想开火,听我自己的自定义事件。 我不需要或不想访问DOM。 这是一个例子: function doSomething(){ //… $.trigger('finished-doSomething'); //fire the event 'finished-doSomething' } //when the event 'finished-doSomething' is fired -> execute the function in the second param $.live('finished-doSomething', function(){ alert("I finished-doSomething"); }); 是否有可能做到这一点与普通的JavaScript代码或类似jQuery的库? 如果没有,避免嵌套callback的好方法是什么? 谢谢!

如何在NodeJS中扩展事件的对象 – 文字对象?

我想让我的Node.js对象强制转换事件 。 现在,如果我创build“静态”对象并将它们实例化,这不是问题,但是当我的对象没有静态的祖父时,如何做到这一点,就像使用对象字面符号创build对象一样 ? 我习惯于编写ExtJS语法,所以我更喜欢对象字面量的一切。 // var EventEmitter = require('events').EventEmitter; // How where when? myObject = { myFunction: function() { console.log('foo'); }, urFunction: function() { console.log('bar'); } }; 这是一个对象。 它没有构造函数,因为不需要更多的实例。 现在我该如何让myObject发出事件? 我已经尝试过,并尝试修改代码,但是如果不使用像这样的构造函数重写我的对象, var EventEmitter = require('events').EventEmitter; var util = require('util'); function myClass() { EventEmitter.call(this); myFunction: function() { this.emit('foo'); }, urFunction: function() { this.emit('bar'); } }; […]

如何在node.js(express.js)中创build自定义事件侦听器?

我有一个巨大的function,嵌套的callback很多。 我想使它更清洁,更容易处理。 所以,我正在考虑使用自定义事件侦听器 就像一个函数完成的时候,在callback中,不是放置一大块代码,而是发出一个事件,然后监听器就会运行。 那么,如何在node.js中做到这一点? 我仍然在寻找一个很好的例子来指导我。

你应该如何inheritanceEventEmitter节点?

我正在阅读这篇小文章,以了解从EventEmitterinheritance,但我有点困惑。 他这样做: function Door() { events.EventEmitter.call(this); this.open = function() { this.emit('open'); }; } Door.prototype.__proto__ = events.EventEmitter.prototype; https://gist.github.com/chevex/7646362 为什么他用自己的构造函数手动调用EventEmitter的构造函数呢? 另外,为什么他将原型的原型设置为EventEmitter的原型呢? 这对我来说非常混乱。 然后在评论中有人build议他这样做,而这看起来更优雅: function Door() { events.EventEmitter.call(this); this.open = function () { this.emit('open'); } } util.inherits(Door, events.EventEmitter); https://gist.github.com/chevex/7646447 这似乎比其他方式更干净,尽pipe这可能只是因为我不明白发生了什么事情。 如果util.inherits和第一个例子一样,我也不会感到惊讶。 第二个至less对我有点意义,但是我还是不明白为什么他们不这样做: function Door() { this.open = function () { this.emit('open'); } } Door.prototype = new events.EventEmitter(); https://gist.github.com/chevex/7646524 […]

如何发布mongoose中间件事件?

我想在新博客保存时发出事件 blog.post('save',function(blog){ this.emit('newBlog',blog) }) 和我的项目中的其他地方说app.js可以听这个事件 EventEmitter = require('events').EventEmitter; emitter = new EventEmitter(); emitter.on('newBlog',function(blog){ console.log(blog); }) 这个怎么做?

了解Node.js事件循环。 process.nextTick()从不调用。 为什么?

我正在试验事件循环。 首先我从这个简单的代码开始读取和打印文件的内容: var fs = require('fs'); var PATH = "./.gitignore"; fs.readFile(PATH,"utf-8",function(err,text){ console.log("—-read: "+text); }); 然后我把它放入一个无限循环。 在这种情况下,readFile函数从不执行。 如果我没有弄错,那是因为Node的单线程正忙于迭代而不让I / O调用被执行。 while(true){ var fs = require('fs'); var PATH = "./.gitignore"; fs.readFile(PATH,"utf-8",function(err,text){ console.log("—-read: "+text); }); } 所以,我想要做一些事情,使I / O调用与循环交织的进程时间。 我尝试用process.nextTick(),但它不起作用: while(true){ process.nextTick(function(){ fs.readFile(PATH,"utf-8",function(err,text){ console.log("—-read: "+text) }); }); } 为什么它不工作,我怎么能做到这一点?

Node.jsnetworking事件不会触发

我有下面的示例来监听连接和数据事件,以将结果回显给在端口8888上侦听的其他telnet客户端。我的telnet会话连接到locahost,但没有输出回显。 我正在撞墙,试图弄清楚什么是错的。 执行甚至没有达到“连接”事件。 /server.js var events = require('events'); var net = require('net'); var channel = new events.EventEmitter(); channel.clients = {}; channel.subscriptions = {}; channel.on('join', function (id, client) { this.clients[id] = client; this.subscriptions[id] = function (senderId, message) { if (id != senderId) { this.clients[id].write(message); } } this.on('broadcast', this.subscriptions[id]); }); var server = net.createServer(function (client) { var […]

Socket.io – 在node.js的单独文件中监听事件

比如我的想法是: File1.js io.sockets.on('connection', function (socket) { socket.on('file1Event', function () { //logic }); }); File2.js io.sockets.on('connection', function (socket) { socket.on('file2Event', function () { //logic }); }); 这个代码是针对一个节点服务器的,这个代码我会有问题吗?