node.js. kullanarak basit bir oylama uygulaması yazmaya çalışıyorum. Bir zamanlayıcıda bir eylem gerçekleştiren ve o periyodik eylemin sonucuna göre olayları yayan bir EventEmitter yazmak istiyorum.node.js, setTimeout geri arama yöntemi ve "this"
Kendi nesneyi oluşturarak ve EventEmitter'dan devralarak başlıyorum. Bir zamanlayıcıyı setInterval kullanarak başlatıyorum ve zamanlayıcı geçtikten sonra çağrılacak yöntemi belirtiyorum. Zamanlayıcı geri çağırma yöntemi içinde, yarattığım nesnenin bir değişkenine başvurmak istiyorum, ancak this
nesneye başvurmuyor.
Değişkenimi bu yöntemde nasıl referans alabilirim?
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;