相比node-cron,我更熟悉 cron,但我快速浏览了文档。
如果我理解正确的话,node-cron 使用的语法类似于 cron 使用的语法,但多了一个“秒”字段。那么 cron 作业可能在哪里:
# min hour mday month wday command
*/15 * * * * some-command
要安排 some-command 每 15 分钟运行一次,node-cron 将使用类似的语法来指定运行时间:
'0 */15 * * * *'
(带有指定秒数的附加字段),但它执行指定的 JavaScript 函数,而不是外部命令。
在标准 cron 中,没有指定每 45 分钟运行一次作业的语法。 0/45 * * * * 的规范将每小时运行两次作业,分别在整点后的 0 分钟和 45 分钟。要每 45 分钟运行一次作业(在 00:00、00:45、01:30、02:15,...,即每天 32 次),您必须安排它每 15 分钟运行一次,并且然后调用一个检查当前时间的脚本来决定是否做任何事情。
或者您可以写一份详尽的列表,列出您希望作业运行的所有时间:
0 0 * * * some-command
45 0 * * * some_command
30 1 * * * some_command
15 2 * * * some_command
# 28 lines omitted
我肯定想写一个脚本来生成这个列表。
(这是可行的,因为 24 小时恰好是 45 分钟的倍数。
你不能以这种方式每 35 分钟运行一次。)
类似的方法应该适用于 node-cron。安排函数每 15 分钟运行一次,并调用一个检查当前时间的函数来决定是否运行。例如,您可以检查从午夜开始的分钟数模 45 是否为零。 (如果计划不准确,您可能希望允许有一个小的差异。)
我对 JavaScript 的了解不够,无法建议编写此函数的最佳方法,但它应该相当简单。
或者写 32 行来指定你希望它运行的所有时间。