在Node.js中设置计时器

Ama*_*a G 20 settimeout setinterval node.js

我需要每24小时在Node.js中运行代码.我遇到了一个叫做的函数setTimeout.以下是我的代码段

var et = require('elementtree');
var XML = et.XML;
var ElementTree = et.ElementTree;
var element = et.Element;
var subElement = et.SubElement;
var data='<?xml version="1.0"?><entries><entry><TenantId>12345</TenantId><ServiceName>MaaS</ServiceName><ResourceID>enAAAA</ResourceID><UsageID>550e8400-e29b-41d4-a716-446655440000</UsageID><EventType>create</EventType><category term="monitoring.entity.create"/><DataCenter>global</DataCenter><Region>global</Region><StartTime>Sun Apr 29 2012 16:37:32 GMT-0700 (PDT)</StartTime><ResourceName>entity</ResourceName></entry><entry><TenantId>44445</TenantId><ServiceName>MaaS</ServiceName><ResourceID>enAAAA</ResourceID><UsageID>550e8400-e29b-41d4-a716-fffffffff000</UsageID><EventType>update</EventType><category term="monitoring.entity.update"/><DataCenter>global</DataCenter><Region>global</Region><StartTime>Sun Apr 29 2012 16:40:32 GMT-0700 (PDT)</StartTime><ResourceName>entity</ResourceName></entry></entries>'
etree = et.parse(data);
var t = process.hrtime();
// [ 1800216, 927643717 ]

setTimeout(function () {
  t = process.hrtime(t);
  // [ 1, 6962306 ]
  console.log(etree.findall('./entry/TenantId').length); // 2
  console.log('benchmark took %d seconds and %d nanoseconds', t[0], t[1]);
  //benchmark took 1 seconds and 6962306 nanoseconds
},1000);
Run Code Online (Sandbox Code Playgroud)

我想每小时运行一次上面的代码并解析数据.作为我的参考,我使用了一秒作为计时器值.任何想法如何继续将是非常有帮助的.

Mar*_*her 43

基本上有三种方法可循

  1. setInterval()

setTimeout(f, n)函数等待n毫秒并调用函数f.该setInterval(f, n)函数fn毫秒调用一次.

setInterval(function(){
  console.log('test');
}, 60 * 60 * 1000);      
Run Code Online (Sandbox Code Playgroud)

test每小时打印一次.您可以将代码(require语句除外)放入a setInterval().然而,这对我来说似乎有些难看.我宁愿一起去:

  1. 计划任务大多数操作系统都有调度任务的方法.在Windows上,这在Linux上称为" 计划任务 ",代表cron.

  2. 使用图书馆正如我在回答时意识到的那样,人们甚至可以将其视为该问题的副本.

  • setInterval中有一个拼写错误 (2认同)
  • Node.js安排在毫秒级别,看起来似乎是一个糟糕的建议,建议您应该使用这些策略在JavaScript中安排到目前为止的事情.有很多东西会以意想不到的方式改变时间,让计算机进入睡眠/休眠状态等等.像其他人一样,建议您在这种情况下将长期计划委托给基于Microsoft的系统程序. (2认同)