Monday, 6 May 2019

Schedule jobs into queue when starting electron

I am using "electron": "^5.0.0" and "node-schedule": "^1.3.2" - node-schedule. I am trying to load my job-queue when starting the electron app.

My main.js from electron looks like the following:

async function main() {

  const {
    app,
    BrowserWindow
  } = require('electron')
  const schedule = require('node-schedule');
  const {
    Schedule
  } = require('./schedule')

  let win

  let sch = new Schedule()
  try {
    await sch.initScheduledContent()
    console.log("Imported of jobs done!");
  } catch (error) {
    console.log(error);
  }

  function createWindow() {
    win = new BrowserWindow({
      width: 800,
      height: 600
    })
    win.loadFile('index.html')
    win.on('closed', () => {
      win = null
    })
  }

  app.on('ready', createWindow)

  app.on('window-all-closed', () => {
    if (process.platform !== 'darwin') {
      app.quit()
    }
  })

  app.on('activate', () => {
    if (win === null) {
      createWindow()
    }
  })
}

main()

My schedule.js looks like the following:

const schedule = require('node-schedule');

class Scheduler {

    constructor(){}

    randomDate(start, end) {
        return new Date(start.getTime() + Math.random() * (end.getTime() - start.getTime()));
    }

    async initScheduledContent() {
        let start = new Date()
        let end = new Date()
        end.setSeconds(end.getSeconds() + 20) // add 20 seconds to current time

        let arr = []
        const numb_jobs = 50
        for (let i = 0; i < numb_jobs; i++) {
            d = randomDate(start, end)
            arr.push([i, d]) // job_number, date
            console.log('OPEN: Job  -- #' + arr[i][0] + ' -- scheduled at: ' + arr[i][1]);

            schedule.scheduleJob(arr[i][1], function () {
                console.log('DONE: Job -- #' + arr[i][0] + ' -- executed at: ' + arr[i][1]);
            });
        }
        console.log("\n Number of Jobs Scheduled: " + Object.keys(this.getQueue()).length + "\n");
    }
}

module.exports = {
    Scheduler
};

When using electron ., my app does not start and hangs up.

Any suggestions how to start my app and load all jobs into the queue?



from Schedule jobs into queue when starting electron

No comments:

Post a Comment