如何为 typescript class 方法创建 Cron 作业
How to make a Cron job for a typescript class method
在 Typescript 中,我有一个控制器 class,它有一个我想在每天早上 5 点 运行 执行的方法。
我的第一个想法是使用 node-cron 或 node-scheduler 来安排一些事情,但这些似乎只针对节点项目,而不是 typescript。
我需要做的是 a) 将我的整个 typescript 项目转译到 node 中,然后 b) 运行 按计划执行的方法。
虽然似乎没有关于如何执行此操作的任何解释。我看到的解释都是关于 运行 在某个时间表上执行 node.js 函数,比如这个:
I need a Nodejs scheduler that allows for tasks at different intervals
下面的代码说明了我对我正在尝试做的事情的最佳近似。
controller.ts
import SomeOtherClass from './factory';
class MyController {
public async methodToRun(){
console.log ("King Chronos")
}
}
cron-job.ts
import MyController from "../src/controller";
let controller = new MyController();
var cronJob = require('cron').CronJob;
var myJob = new cronJob('00 30 11 * * 1-5', function(){
controller.methodToRun();
console.log("cron ran")
});
myJob.start();
npm i cron
npm i -D @types/cron
由于有可用的类型,因此它与 TypeScript 一起工作得很好。在我的打字稿中,我做了类似的事情:
import { CronJob } from 'cron';
class Foo {
cronJob: CronJob;
constructor() {
this.cronJob = new CronJob('0 0 5 * * *', async () => {
try {
await this.bar();
} catch (e) {
console.error(e);
}
});
// Start job
if (!this.cronJob.running) {
this.cronJob.start();
}
}
async function bar(): Promise<void> {
// Do some task
}
}
const foo = new Foo();
当然不需要在Foo
的构造函数里面启动作业。这只是一个例子。
在 Typescript 中,我有一个控制器 class,它有一个我想在每天早上 5 点 运行 执行的方法。
我的第一个想法是使用 node-cron 或 node-scheduler 来安排一些事情,但这些似乎只针对节点项目,而不是 typescript。
我需要做的是 a) 将我的整个 typescript 项目转译到 node 中,然后 b) 运行 按计划执行的方法。
虽然似乎没有关于如何执行此操作的任何解释。我看到的解释都是关于 运行 在某个时间表上执行 node.js 函数,比如这个: I need a Nodejs scheduler that allows for tasks at different intervals
下面的代码说明了我对我正在尝试做的事情的最佳近似。
controller.ts
import SomeOtherClass from './factory';
class MyController {
public async methodToRun(){
console.log ("King Chronos")
}
}
cron-job.ts
import MyController from "../src/controller";
let controller = new MyController();
var cronJob = require('cron').CronJob;
var myJob = new cronJob('00 30 11 * * 1-5', function(){
controller.methodToRun();
console.log("cron ran")
});
myJob.start();
npm i cron
npm i -D @types/cron
由于有可用的类型,因此它与 TypeScript 一起工作得很好。在我的打字稿中,我做了类似的事情:
import { CronJob } from 'cron';
class Foo {
cronJob: CronJob;
constructor() {
this.cronJob = new CronJob('0 0 5 * * *', async () => {
try {
await this.bar();
} catch (e) {
console.error(e);
}
});
// Start job
if (!this.cronJob.running) {
this.cronJob.start();
}
}
async function bar(): Promise<void> {
// Do some task
}
}
const foo = new Foo();
当然不需要在Foo
的构造函数里面启动作业。这只是一个例子。