我具有以下功能:
getHostlist() {
fs.readFile('out/hostlist', 'utf8', (err, data) => {
if (err) throw err;
var hostlist = data.split(',');
this.getHostStats(hostlist);
});
},
它已导出。
在我的index.js中,我试图每分钟用setInterval调用它:
setInterval(remote.getHostlist, config.app.refresh);
第二个参数包含60000。
所以我尝试每分钟运行一次。
但是当它运行时收到以下错误:
TypeError: this.getHostStats is not a function
但是当我没有间隔地手动运行该函数时,它将起作用,并且会调用getHostStats
。
问题出在哪里??
编辑完整导出脚本:
module.exports = {
getHostlist() {
console.log("Starting Usage synchronization at " + currTime());
fs.readFile('out/hostlist', 'utf8', (err, data) => {
if (err) throw err;
var hostlist = data.split(',');
getHostStats(hostlist);
});
},
....
}
如果我在这里写下所有内容,那将太长了。
答案 0 :(得分:0)
我相信在这种情况下,“ this”指的是setInterval代码运行的任何位置,因此“ this”不再是远程的。尝试获取对remote.getHoststats
的明确引用,并改用它。
//编辑1 // 可能需要将导出函数包装到一个类中,创建该类的对象,然后导出该对象。那应该保证“ this”在您的上下文中有效
答案 1 :(得分:0)
尝试
module.exports = {
getHostlist : function getHostlist() {
console.log("Starting Usage synchronization at " + currTime());
fs.readFile('out/hostlist', 'utf8', (err, data) => {
if (err) throw err;
var hostlist = data.split(',');
getHostStats(hostlist);
});
}
}
这可以解决您的问题