Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Node.js中设置计时器_Node.js_Settimeout_Setinterval - Fatal编程技术网

在Node.js中设置计时器

在Node.js中设置计时器,node.js,settimeout,setinterval,Node.js,Settimeout,Setinterval,我需要每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>&

我需要每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);
var et=require('elementtree');
var XML=et.XML;
var ElementTree=et.ElementTree;
var元素=等元素;
var子元素=et子元素;
var data='12345Maasenaaa550E8400-e29b-41d4-a716-446655440000 CreateGlobalGlobalSun 2012年4月29日16:37:32 GMT-0700(PDT)实体44445Maasenaaa550E8400-e29b-41d4-a716-FFFFF 000更新GlobalSun 2012年4月29日16:40:32 GMT-0700(PDT)实体'
etree=et.parse(数据);
var t=process.hrtime();
// [ 1800216, 927643717 ]
setTimeout(函数(){
t=过程时间(t);
// [ 1, 6962306 ]
console.log(etree.findall('./entry/TenantId').length);//2
log('基准测试花费了%d秒和%d纳秒',t[0],t[1]);
//基准测试耗时1秒和6962306纳秒
},1000);

我想每小时运行一次上述代码并解析数据。作为参考,我使用了一秒钟作为计时器值。任何关于如何进行的想法都会很有帮助

基本上有三条路要走

  • setInterval()
  • setTimeout(f,n)
    函数等待n毫秒并调用函数
    f
    setInterval(f,n)
    函数每隔
    n
    毫秒调用一次
    f

    setInterval(function(){
      console.log('test');
    }, 60 * 60 * 1000);      
    
    这会每小时打印一次
    test
    。您可以将代码(require语句除外)放入
    setInterval()
    中。然而,这对我来说似乎有点丑陋。我宁愿选择:

  • 计划任务 大多数操作系统都有一种简化任务的方法。在Windows上,这称为“Linux上的查找cron”

  • 正如我在回答时意识到的那样,人们甚至可以将此视为该问题的重复


  • 不是这样的。。。您希望每小时运行一次整个脚本,而不是指望节点进程始终处于活动状态。如果您使用的是linux,请查找cron作业。@cwolves我使用的是windows 7。您知道如何使用它吗?如果您使用的不是与linux兼容的操作系统,请使用另一个执行相同操作的程序。我也同意@cwolves的观点,因为可能没有必要让node.js程序一直运行。这只是系统中运行的另一个进程,似乎没有必要。cron的理念是,它是一个管理器,可以按计划运行许多脚本或作业,同时只使用运行计划在该时间运行的内容所需的系统资源。TaskTimer-setIntervalNode中有一个拼写错误。js计划在毫秒级,建议您使用这些策略可以将事情安排到JavaScript中的未来。有太多的事情会以意想不到的方式改变时间,让电脑进入睡眠/休眠状态等等。与其他人一样,在这种情况下,您应该将长期计划委托给基于Microsoft的系统程序。