Articles of javascript events

自定义类与自定义事件和asynchronous工作通过浏览器使用

我创build了一个简单的类与asynchronous工作和自定义事件。 这个版本适用于Node.js: 'use strict'; const EventEmitter = require('events'); // Custom class with the custom event and async work class Foo extends EventEmitter{ // Some async work with notifying doWork(data){ const self = this; if(!data || 'number' != typeof data) { self.emit('work-done', new Error('Invalid data')); return; } else{ // Some long work… function fib(n){ return n […]

对Expressjs / Nodejs请求 – 响应处理感到困惑

那么 – 我读得越多,我就越困惑。 所以这里的来源: var express = require('express') , http = require('http') , server = express() ; var home = require('./routes/home.js') , about = require('./routes/about.js') , contact = require('./routes/contact.js'); server.configure(function () { server.set('port', process.env.PORT || 3000); server.set('view engine', 'hjs'); server.set('views', __dirname + '/views'); server.use(express.logger()); server.use(server.router); server.use(express.favicon()); server.use(require('stylus').middleware(__dirname + '/public')); server.use(express.static(__dirname + '/public')); server.use(express.bodyParser()); server.use(express.cookieParser('your secret […]

为什么当我加载我的HTML页面时,我的外部JavaScript文件不工作?

我分开我的HTML和JavaScript代码。 我将我的JavaScript代码放到一个单独的文件中,并使用“脚本”标签在我的html文件中引用它。 我在JavaScript代码中有两个函数,一个用于创build一个自动填充,这意味着如果我开始在文本框中input文本,该函数给了我一个可能的名字,我可能想要在文本框下面写,另一个创build一个时钟给出当前时间。 这里是我的JavaScript和HTML文件分别。 你能告诉我问题是什么吗? 谢谢。 function Complete(obj, evt) { var names = new Array("albert","alessandro","chris"); names.sort(); if ((!obj) || (!evt) || (names.length == 0)) { return; } if (obj.value.length == 0) { return; } var elm = (obj.setSelectionRange) ? evt.which : evt.keyCode; if ((elm < 32) || (elm >= 33 && elm <= 46) || […]

setTimeout不能按要求工作?

我正在使用socket.io连续发送一些数据从服务器到客户端。 所以我正在使用setTimeout函数定期发送数据。 而睡眠时间不是恒定的,所以我不使用setInterval。 但setTimeout不起作用。 我正在使用服务总线从我的工作者angular色获取一些数据,这些数据将定期发送到客户端。 这是我的代码。 var sleepTime; function requestQueue() { sleepTime = 0; console.log("REQUEST QUEUE STARTED"); console.log("SEND to WORKER ROLE"); // send the request to worker role var broadcastMessage = {} broadcastMessage.Channel = "World"; broadcastMessage.BufferSize = 10; sendMessage(socketToWorkerRole, broadcastMessage) receivePeriodicRecordsQueue(workerRoleToSocket); } //// function receivePeriodicRecordsQueue(queue) { serviceBusService.receiveQueueMessage(queue, function (error, receivedMessage) { if (!error) { if […]

这个JS代码有什么错?

var Subscription = require('./Subscription'); var api = require('./api'); exports = module.exports = {}; var bridgeData; function validateAccount(account) { if (!account) throw new Error('Muzzley account details must be present!'); if (!account.appToken) throw new Error('appToken is not defined!'); if (!account.profileId) throw new Error('profileId is not defined!'); if (!account.serialNumber) throw new Error('serialNumber is not defined!'); } function validateComponents(components) […]

在效率和优雅方面,添加和删除事件侦听器还是使用全局/高级variables来控制发射器事件逻辑更好?

为了澄清我的问题,下面是两个例子在javascript-esque伪代码。 这里是相同的例子,但有更多的代码来上下文化他们: http : //pastebin.com/fRjW5qp6 看看我是如何使用条件来防止套接字触发重要的事件逻辑后,他们已经触发过一次(例如,我已经设置了事件监听器触发后,socket.loginBuilt为true)。 socket.on('login screen built', socketLoginScreenBuilt); function socketLoginScreenBuilt() { // See how I'm using this conditional to prevent sockets from triggering the important event logic after they've already triggered it once (since I set socket.loginBuilt to true in the logic) if (!socket.loginBuilt) { numberOfSocketsWithBuiltLoginScreens++; socket.loginBuilt = true; if (numberOfSocketsWithBuiltLoginScreens === io.sockets.sockets.length) […]

如何检查Node.js事件的“履行”状态?

当我们和Promise一起工作时,我们可以检查待处理状态是否完成。 但是对于Node.js事件,我们只能添加一些命名事件的侦听器。 我们如何检查特定事件是否已经发生?

保持proc.stdout.on()结果?

一般来说,我对JavaScript很陌生,尤其是在服务器端。 我正在使用node.js并具有以下代码: var results = modulex.commandy(args) 在哪里modulex看起来像: export.commandy = function(args) { var output; var pingproc = spawn('ping', ['-c 1', 'host.com']); pingproc.stdout.on('data', function (data) { output += data; }); return output; } 如果我想要这个commandy函数从过程中返回stdout的结果,我该怎么做? 在标准输出callback被调用之前,这个commandy函数不会完成吗? 在上面的代码中, output总是未定义的 。 谢谢你的帮助!

NodeJS事件循环Fundamendals

我相信这是一个常见的问题,但没有find具体的答案。 我有点理解NodeJS的基本概念,它是处理I / O的asynchronous/非阻塞性质。 为了说明起见,我们举一个简单的例子,在节点上写一个执行unix命令find /的HTTP服务器,并将结果写入http响应(因此在用户的浏览器上显示该命令的结果)。 我们假设这需要3秒钟。 假设有两个用户“A”和“B”通过他们的浏览器同时请求。 据我所知用户的请求排队在事件队列(消息A,消息B)。 该消息还具有一个处理完成后执行的相关callback的引用。 由于事件循环是单线程的,并逐个处理事件, 在我上面的例子中,“用户B”的callback触发需要6秒钟吗? [3用于“用户A”的事件处理,3用于它自己的事件处理] 这听起来像我在这里失去了一些东西? 最差的是,如果有100个用户在同一个毫秒内请求? 第100名赛事老板将成为最不幸的用户,必须等待永恒。 据我所知,在运行时只有一个事件队列,上述问题可以适用于应用程序任何部分的任何用户。 例如,网页X中的一个缓慢的数据库查询会减慢网页Y中的不同用户? 从根本上说,我发现串行处理事件和串行执行相关callback的问题。 我在这里错过了什么?

询问元素的事件

在JavaScript中,有没有办法哟作为我可以用来添加侦听器的事件的元素。 就像是: element = document.getElementById(id); console.log(element.listEvents); 即时通讯使用DOM的例子,但这也将在node.js有用。