- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
尝试在函数内设置监听器时出现错误。我已经审查了它适用的其他代码,但似乎无法让它为我的目的工作。
这是我试图完成的工作的简化版本。
var ticketGenerator = function(){
var self = this;
console.log('ticket generator');
var rows = "";
this.emit("getQueue")
var _getQueue = function(){
console.log('Getting Queue');
var connection = mysql.createConnection({
//Connection Data
});
connection.connect();
connection.query("SELECT * FROM `queue` WHERE `run` = 0 ORDER BY `queueID` ASC LIMIT 1", function(err, rows, fields){
if(err){
//self.emit("error", "Unable to get data from the database.")
console.log(err);
}
else if(typeof rows[0] == "undefined"){
console.log("Waiting to run again.");
connection.end();
setTimeout(function(){ticketGenerator()}, 60000);
}
else{
console.log("Passing Ticket Data");
self.emit("newTicketData", rows);
connection.end();
}
})
};
this.on("getQueue", _getQueue);
}
我无法让它运行 _getQueue 的函数。当我放入监听器 _getQueue() 时,它将运行该函数,但会抛出错误(TypeError:监听器必须是一个函数)。我不确定我做错了什么,因为我看到其他以这种方式编写的代码正在运行。
我已经验证我已经使用 this.on('newListener' . . .) 设置了监听器。我假设因为我可以让它在更改监听器上的名称时调用该函数,所以发射器也在做它的工作。
请注意,此 ticketGenerator 函数是使用 requires 从另一个文件调用的。我不知道这是否会影响此问题的解决方案,但认为细节可能很重要。
----------------编辑----------------发布此消息后,我最终弄清楚了这一点。我需要为这些事件调用一个构造函数来完成。代码如下所示。
events.EventEmitter.call(this);
由于代表的原因,我无法回答我自己的问题,但会尽可能更新答案区域。
最佳答案
以下是针对您的不同问题的解决方案:
希望这对您有所帮助。
TicketGenerator = function() {
var self = this;
console.log('ticket generator');
var rows = "";
EventEmitter.call(this);
var _getQueue = function() {
console.log('Getting Queue');
var connection = mysql.createConnection({
//Connection Data
});
connection.connect();
connection.query("SELECT * FROM `queue` WHERE `run` = 0 ORDER BY `queueID` ASC LIMIT 1", function(err, rows, fields){
if(err){
//self.emit("error", "Unable to get data from the database.")
console.log(err);
}
else if(typeof rows[0] == "undefined"){
console.log("Waiting to run again.");
connection.end();
setTimeout(function(){
self.emit('getQueue');
}, 60000);
}
else {
console.log("Passing Ticket Data");
self.emit("newTicketData", rows);
connection.end();
}
});
}
this.on("getQueue", _getQueue);
};
// Instantiate the ticket generator and initiate the first queue retrieval
var ticketGenerator = new TicketGenerator();
ticketGenerator.emit('getQueue');
关于javascript - Node.JS EventEmitter Listener 必须是一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16025844/
我已经尝试了很长时间自己解决这个问题,但找不到适合我的问题的解决方案。 我有这个方法: handle_database = function(callback, req, res) { pool.ge
我差点把问题标题写成 - Communicating between eventEmitters 我有一个全局范围内的 node.js 模块 (X)(它使用 eventEmitter)。然后我有每个套
我正在尝试从一个 EventEmitter 发射到另一个 EventEmitter,或者寻找替代解决方案。下面的代码不起作用。 多发射器示例 var events = require('events'
有很多示例在自定义事件发射器构造函数中未使用 events.EventEmitter.call(this),而其他示例正在使用它 (official documentation): var event
假设我有这段代码: export class ProductsListComponent { @Output() onProductSelected: EventEmitter; constr
有时我们会遇到泛型变量应该被省略的情况。像这样: @Component( ... ) class MyComponent { @Output() public cancel = new Eve
我想做这样的事情: var events = require("events"); var emitterA = new events.EventEmitter(); var emitterB = n
EventEmitter.emit() 和 EventEmitter.next() 有什么区别?两者都将事件分派(dispatch)给订阅的监听器。 export class MyService {
我是 angular2 的新手,我对使用 EmitterService 的 EventEmitter 感到困惑,任何人都可以向我解释 Emitter 的用途。 在不使用@input 和@output
我正在学习 Node.js,对自定义 EventEmitter 有一些困惑。代码如下: var events = require("events"); function MyEmitter (name
如标题所述,我想用 TypeScript 重写下面的语句 EventEmitter = require('events').EventEmitter ES6风格 import {EventEmitte
obj.prototype.__proto__ = events.EventEmitter.prototype 我有时会看到上面的代码,我用谷歌搜索了一下,他们说这一行将所有 EventEmitter
我创建了一个抽象父类(super class)来处理我应用中各种表单组件的通用因素。 出于某种原因,我无法正确捕获由在父类(super class)中声明了 EventEmitter 的派生类发出的事
我尝试将表单从我的子组件传递给他的父组件。 child TS: @Output() submit: EventEmitter = new EventEmitter(); updateStream():
这真的很奇怪,也很难解释。 我用过EventEmitter在我的一些服务中,我一直在使用它来更改我的 View 数据。 我遇到了更改路线(通过链接或通过历史返回)的问题,它似乎被多次触发,因此它搞乱了
我正在开发一个 Angular2 组件,它使用网络摄像头将图片捕捉到 Canvas 元素,并将其提取为 Blob。 Blob 和事件分别正常工作,但是当我尝试从 toBlob 的回调函数内发出事件时,
当我有一个带有选择器'recursive-element'的模板时,它的模板看起来像这样 在我定义的类中 greetEvent = new EventEmitter
我非常喜欢将函数导出为 JavaScript 模块的主要 API 的模式。原因是在 JS 中,函数基本上可以做典型对象可以做的任何事情,然后再做一些。 所以这对我来说很典型: function stu
我有这个 Node js脚本: var EventEmitter = require('events').EventEmitter, util = require('util'); var p
在事件生成后附加事件处理程序有一个看似众所周知的问题。这主要是在调用遵循返回 EventEmitter 模式的函数时出现的问题,例如: var EventEmitter = require('even
我是一名优秀的程序员,十分优秀!