从 json 配置文件安排功能
Schedule functions from a json configuration file
我有一个 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
});
您可以通过将函数存储在一个对象中来达到目的:
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
});
我有一个 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
});
您可以通过将函数存储在一个对象中来达到目的:
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
});