class Task { context delayTime name logger constructor(taskName, delayTime, initFun, onTickFun) { this.name = taskName this.delayTime = delayTime this.init = initFun this.onTick = onTickFun this.loggerInit() } loggerInit() { this.logger = require('log4js').getLogger(this.name) this.logger.level = 'debug' } async Start() { const task = this this.logger.info(`Init context or others.`) await this.init() this.logger.info(`Dida dida dida, on tick, on tick...`) this.interval = setInterval(async () => { try { await task.onTick() } catch (e) { task.logger.error(e) } }, this.delayTime) } async Stop() { clearInterval(this.interval) } } module.exports = Task