我相信可能存在可以解决此问题的结构问题,但我不确定如何为调用模块中的方法的父类保留设置值。我试图尽可能简化我的代码。
我有一系列的任务,我在课堂上跟踪并按间隔运行。每个任务从远程数据库中提取数据,然后对其进行处理。虽然在这个例子中我只需要设置task.fetching。还有一些我希望能够从runner.js文件中更新的其他值。
我应该注意,如果可能的话,我对如何解决这个问题感兴趣,而不是专门找到一些可以为我处理运行任务的模块。
// task.js
const runner = require('./runner');
class Task {
constructor(params) {
this.details = params.details;
this.fetching = false;
this.interval = null;
}
start() {
this.interval = setInterval(() => {
if (!this.fetching) {
runner.run(this.details);
}
}, this.details.frequency * 1000);
}
}
module.exports = Task;
// runner.js
const run = (task) => {
fetch(task.url)
.then(parseData)
.then(data => {
if (task.format === 'type') {
return formatItems(data.items);
}
return {};
})
.then(items => {
if (Object.keys(items).length > 0) {
console.log(`Found ${Object.keys(items.newItems).length} new items and ${Object.keys(items.updatedItems).length} updated items`);
}
// *** NEED TO SET TASK FETCHING TO FALSE HERE
})
.catch(e => {
console.log('ERROR:', e);
});
};
答案 0 :(得分:1)
task.fetching = false
...不确定我是否接受了这个问题。