Javascript 销毁节点cron作业或取消节点计划程序作业
我正在开发一个nodejs应用程序,它可以调度多个cron作业。 顺便说一句,我试图取消作业时出错了 情况如下Javascript 销毁节点cron作业或取消节点计划程序作业,javascript,node.js,cron,node-cron,Javascript,Node.js,Cron,Node Cron,我正在开发一个nodejs应用程序,它可以调度多个cron作业。 顺便说一句,我试图取消作业时出错了 情况如下 我使用node cron或node schedule创建了多个cron作业 一些作业的开始时间已经过去,然后我尝试使用脚本取消所有cron作业 我犯了如下错误。 TypeError:testJob.destory不是函数 你能帮我解决这个问题吗 cron模块/cronManager.js script/main.js 您的代码中有一个打字错误您有testJob1.destory()
- 我使用
或node cron
创建了多个cron作业李>node schedule
- 一些作业的开始时间已经过去,然后我尝试使用脚本取消所有cron作业李>
- 我犯了如下错误。
TypeError:testJob.destory不是函数
您的代码中有一个打字错误您有
testJob1.destory()
,但应该是testJob.destroy()
将停止并完全销毁计划的任务
假设这是示例代码,因此它缺少
cronManager.startCronjobs()
的一些参数,并且此函数不返回任何承诺
使用等待
发布您的代码。如果有一个作业已经启动,那么如果我尝试销毁该作业呢?它将销毁,将testJob1.destory()
更改为testJob.destroy()
我试过了,结果是一样的。我只是重写代码,在这里显示它。所以类型错误不是问题。然后更新你的问题我解决了问题。这是一个典型的问题。谢谢你的帮助。
const cron = require("node-cron")
// cron jobs
let testJob1
let testJob2
let testJob3
async function startCronjobs(cronTimes) {
testJob1 = cron.schedule(cronTimes.testTime1, () => {
console.log("test 1 job")
}, {
scheduled: true,
timezone: "America/New_York"
})
testJob1.start()
testJob2 = cron.schedule(cronTimes.testTime2, () => {
console.log("test 2 job")
}, {
scheduled: true,
timezone: "America/New_York"
})
testJob2.start()
testJob3 = cron.schedule(cronTimes.testTime3, () => {
console.log("test 3 job")
}, {
scheduled: true,
timezone: "America/New_York"
})
testJob3.start()
}
async function destroyCronjobs() {
console.log("============= Destroy node-cron Jobs ================")
return new Promise((resolve, reject) => {
if(testJob1 !== undefined && testJob1 !== null) testJob1.destory()
if(testJob2 !== undefined && testJob2 !== null) testJob2.destory()
if(testJob3 !== undefined && testJob3 !== null) testJob3.destory()
})
}
module.exports.destroyJobs = destroyCronjobs
module.exports.startCronJobs = startCronjobs
const cronManager = require("./cronManager")
const express = require("express")
const router = express.Router()
router.post("/start", wrapper(async (req, res) => {
await cronManager.startCronjobs()
}))
router.post("/destroy", wrapper(async (req, res) => {
await cronManager.destoryCronjobs()
}))