task.js 779 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. class Task {
  2. context
  3. delayTime
  4. name
  5. logger
  6. constructor(taskName, delayTime, initFun, onTickFun) {
  7. this.name = taskName
  8. this.delayTime = delayTime
  9. this.init = initFun
  10. this.onTick = onTickFun
  11. this.loggerInit()
  12. }
  13. loggerInit() {
  14. this.logger = require('log4js').getLogger(this.name)
  15. this.logger.level = 'debug'
  16. }
  17. async Start() {
  18. const task = this
  19. this.logger.info(`Init context or others.`)
  20. await this.init()
  21. this.logger.info(`Dida dida dida, on tick, on tick...`)
  22. this.interval = setInterval(async () => {
  23. try {
  24. await task.onTick()
  25. } catch (e) {
  26. task.logger.error(e)
  27. }
  28. }, this.delayTime)
  29. }
  30. async Stop() {
  31. clearInterval(this.interval)
  32. }
  33. }
  34. module.exports = Task