我正在尝试使用node-schedule
在类中实现计划的队列处理程序。
但是回调具有不同类的范围,并且无法使用this
访问对象成员。有什么建议如何使其工作?
const schedule = require('node-schedule');
class QueueHandler {
constructor() {
this.queue = [];
this.j = schedule.scheduleJob('send', '*/10 * * * * *', this.parseNext);
this.sendJob = schedule.scheduledJobs['send'];
}
// this one called from outside
fillQueue(rows) {
rows.forEach(user => {
this.queue.push(user);
});
}
parseNext() {
if (this.queue.length > 0) { // here comes the problem - this.queue undefined
const next = this.queue.shift();
// do some manipulations with the next item
} else {
console.log('empty queue');
}
}
}
module.exports.QueueHandler = QueueHandler;
最佳答案
答案在您的问题中,您可以使用bind。
this.j = schedule.scheduleJob('send', '*/10 * * * * *', this.parseNext.bind(this));
或者您可以使用arrow syntax:
schedule.scheduleJob('send', '*/10 * * * * *', x=>this.parseNext(x));
关于javascript - 如何在类(class)内将其绑定(bind)到计划的工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48860060/