function Job(name, cronString, task) {
"use strict";
this.name = name;
this.cronString = cronString;
this.isReady = false;
this.task = task;
}
Job.prototype.performTask = (db, winston) => {
"use strict";
const Promise = require("bluebird");
let that = this;
return new Promise((resolve, reject) => {
let output = "";
let success = true;
try {
output = that.task();
}
catch(error) {
success = false;
reject(error);
}
if(success) {
resolve(output);
}
});
};
module.exports = Job;
这里的Javascript新手。当我创建一个Job
对象并调用performTask
方法时,我得到“that.task不是函数”。 this
方法的最开始performTask
不应该引用Job
?
我犯的错是什么?
另外,有没有更好的方法来做我想做的事情?
答案 0 :(得分:7)
我犯的错误是什么?
您正在使用箭头功能。箭头函数中的this
以不同方式解析,它不会引用您的Job
实例。
不要将箭头函数用于原型方法。
有关详细信息,请查看Arrow function vs function declaration / expressions: Are they equivalent / exchangeable?。