在子模块nodejs

时间:2017-02-06 20:07:56

标签: javascript node.js class

我相信可能存在可以解决此问题的结构问题,但我不确定如何为调用模块中的方法的父类保留设置值。我试图尽可能简化我的代码。

我有一系列的任务,我在课堂上跟踪并按间隔运行。每个任务从远程数据库中提取数据,然后对其进行处理。虽然在这个例子中我只需要设置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);
  });
};

1 个答案:

答案 0 :(得分:1)

task.fetching = false ...不确定我是否接受了这个问题。