我正在尝试使用node.js编写一个简单的轮询应用程序.我想编写一个EventEmitter,它对计时器执行操作,并根据该周期性操作的结果发出事件.
我首先创建自己的对象并继承自EventEmitter.我使用setInterval启动计时器,并在计时器结束后指定要调用的方法.在计时器回调方法中,我想引用我创建的对象的变量,但这似乎并不引用该对象.
var util = require('util'),events = require('events'),timers = require('timers'),redis = require('redis'); // define worker object var JobPoller = function () { // inherit event emitter events.EventEmitter.call(this); // save reference to database this.db = redis.createClient(); // start main loop this.interval_id = timers.setTimeout(this.check,1000); }; JobPoller.prototype.check = function () { // pop a job off the queue if possible this.db.rpop('pdf-job-queue',function (err,result) { if (err != null) this.emit('error',err); if (result != null) this.emit('job',JSON.parse(result)); // check for more jobs this.interval_id = timers.setTimeout(this.check,1000); }); }; // inhert from event emitter util.inherits(JobPoller,events.EventEmitter); // export the poller instance module.exports = new JobPoller;
解决方法
原文地址:https://www.jb51.cc/js/159445.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。