Tag: 事件

Nodejs – 将基于Promise的架构与事件混合是错误的

我正在研究将会变得更大的nodejs应用程序。 对于高级Nodejs项目体系结构和结构,我找不到很多资源。 我想知道是否是一个反模式,在NodeJS中混合承诺的范例和事件。 如果有人拥有先进的项目架构或开源的大型Nodejs项目的资源,它可以真正帮助我。 最好的祝福。

节点事件发射器

我是新来的节点,我正在研究事件发射器,我创build了一个演示程序 var eventEmitter = new event.EventEmitter(); var fs = require("fs"); var data = ''; var read = fs.createReadStream("demo.txt"); read.setEncoding('UTF8'); read.on('data', function(resp) { console.log(resp); }); data='some data'; var writeStream = fs.createWriteStream("demo.txt"); writeStream.write(data,'UTF8'); writeStream.end(); writeStream.on('finish',function(){ console.log("finish"); }); 所以输出是“完成”,但如果我在写入stream之后写入读取stream,输出是“完成一些数据”,那么为什么读取stream如果我先把它输出就不会产生输出。 PS:我已经在文件中有数据

在事件处理程序中读取和写入全局variables:什么时候是并发性问题?

我是Node.JS的新手,并开始阅读关于Node.js事件处理和并发性的几个主题。 下面的代码触发1000次事件,这是通过增加一个全局variables来处理的。 代码的第一位成功地计数到1000,但第二位甚至没有增加到2.是否有我没有得到的primefaces性? 我仍然想知道为什么下面的代码提供了连贯的输出(它没有任何并发​​地成功计数到1000: // Import events module var events = require('events'); // Event emitter var eventEmitter = new events.EventEmitter(); var max = 1000; var count = 0; eventEmitter.on('event', () => { let time = Math.trunc(Math.random() * 1000) +1; setTimeout(() => { var c = count; c++; count = c; console.log(c); }, time); }); // […]

Socket.io消息事件不从客户端发送到服务器

我在这里陷入了一个r and,希望得到一些帮助。 我是Node.js,Socket.io和Express的新手 – 我刚开始学习,但是进展很快。 我试图build立一个简单的小聊天应用程序,但我遇到了一个问题。 我已经build立了一个带有文本框的表单,它在提交时被发送到服务器,服务器在控制台中logging该值。 唯一的问题是它不logging到控制台。 服务器和客户端连接就好(我有一个console.log(“客户端连接…”)消息,当客户端连接),但消息事件发射器似乎不工作。 我使用过时的代码? 无效的语法? 我花了几个小时寻找答案,还没有find答案。 我的应用程序分为app.js,index.html和/public/default.css。 App.js: var express = require('express'); var app = express(); var http = require('http'); var server = http.createServer(app); var io = require('socket.io').listen(server); io.sockets.on('connection', function(client) { console.log("Client connected…"); client.on('messages', function(data) { console.log(data); }); }); app.use('/public', express.static(__dirname + '/public')); app.get('/', function(request, response) { response.sendfile(__dirname + […]

asynchronous非阻塞事件驱动方法是“asynchronous编程”的唯一方法吗?

我对这里的术语有些困惑。 让一个程序由一些概念上不同的任务组成: 在asynchronous编程模型中,任务是相互交错的,但在一个单一的控制线程中。 即使在多处理器系统上,单线程asynchronous系统也会始终以交错执行。 没有实际的并行性。 事件驱动方法是做“asynchronous编程”的唯一方法吗?

范围内callback的最佳实践

通常,在“构造函数”中,您使用lambda函数来订阅事件: function Something(){ this.on('message', function(){ … }); } util.inherits(Something, events.EventEmitter); 这工作得很好,但延伸不好。 方法更好地inheritance: function Something(){ this.on('message', this._onMessage); } util.inherits(Something, events.EventEmitter); Something.prototype._onMessage = function(){ … }; 保留这些事件处理函数的最佳实践是什么?

nodejs如何将onchange事件添加到string

是否有可能将一个onchange事件添加到一个string? 我想要这样的东西: var myString = ''; var doSomething = function(){ console.log('string changed'); }; myString.on('change',doSomething); myString = 'new'; //at this point the on('change') event should be run

node.js自定义事件:不能调用未定义的方法“emit”

我正在学习节点,它的事件API,并试图做一个简单的例子。 所以这是我的代码: var fs = require('fs'); var util = require('util'); var events = require('events'); var FileLoader = function () { events.EventEmitter.call(this); this.load = function (url) { fs.readFile(url, function (err, data) { if (err) { throw err; } else { this.emit('loaded', data.toString()); } }); }; }; util.inherits(FileLoader, events.EventEmitter); module.exports = FileLoader; 我想load()一个文本文件,当它被加载时,用.on('loaded',function(){…})捕获它,但是this是不确定的,所以程序崩溃。 我肯定错过了一些东西,如何使它工作?

unit testingnodejs事件

我正在使用本答案中解释的解决scheme来解释我的节点应用程序中的unit testing事件。 但是,setTimeout函数永远不会调用,所以我的testing通过时,他们应该失败。 这里是一个例子: suite('myTests', function() { test('myFunction_whenCalled_emitsEvent', function() { var myClass = new MyClass(); var eventTimeout = setTimeout(function() { assert(false); }, 1000); myClass.on('something', function() { clearTimeout(eventTimeout); }); myClass.doSomething(); // this does not emit the 'something' event }); }); 我预计这会失败,1秒钟后,只要事情没有发生。 我在assert(false)行放置了一个断点,它从来没有被打中。 有人能指出我正确的方向吗? 谢谢。

如何在Node中添加事件对象实例?

将事件能力添加到构造函数中是可以的: function Stream() { events.EventEmitter.call(this); } util.inherits(Stream, events.EventEmitter); 但是如何将事件能力添加到对象实例 ? 以下代码不起作用: var foo = {x: 1, y: 2}; util.inherits(foo, event.EventEmitter); events.EventEmitter.call(foo); 运行上面的代码之后, foo.on仍然是undefined 。 有没有办法inheritance或混入EventEmitter的内容?