0

我有一个 json 配置文件,其中包含要在我的 nodeJS 应用程序中安排的默认作业列表。目的是从这个文件中调度(使用节点调度)我的模块的一些功能来手动定义它的间隔。

问题是 json 文件将函数名称(job.name下面)存储为字符串,我需要将函数传递给schedule.scheduleJob.

我试过了this[job.name]module[job.name]但它是一样的。

提前致谢

// ../conf/service
{
    "scheduler": {
        "defaultJobs": [
            { "name": "jobOne", "schedule": "*/1 * * * * *" }, // each second
            { "name": "jobTwo", "schedule": "*/3* * * * *" } // every 3 seconds
        ]
    }
}
const schedule = require('node-schedule');
const conf = require('../conf/service').scheduler;

let count=0;
function jobOne() {
    console.log(`jobOne n°${count++}`);
}

let count1=0;
function jobTwo() {
    console.log(`jobTwo n°${count1++}`);
}


conf.defaultJobs.forEach(job => {
    schedule.scheduleJob(job.schedule, job.name); // call jobOne and jobTwo
});
4

1 回答 1

1

您可以通过将函数存储在对象中来达到目的:

const schedule = require('node-schedule');
const conf = require('../conf/service').scheduler;

let count=0;

function jobOne() {
    console.log(`jobOne n°${count++}`);
}

let count1=0;
function jobTwo() {
    console.log(`jobTwo n°${count1++}`);
}

const jobs = {
    jobOne,
    jobTwo
}

conf.defaultJobs.forEach(job => {
    schedule.scheduleJob(job.schedule, jobs[job.name]); // call jobOne and jobTwo
});
于 2019-09-18T15:37:27.320 回答