22

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);

上記のコードを 1 時間に 1 回実行し、データを解析したいと考えています。参考までに、タイマー値として 1 秒を使用しました。続行する方法についてのアイデアは非常に役立ちます。

4

1 に答える 1

46

行き方は基本的に3つ

  1. setInterval()

setTimeout(f, n)関数は n ミリ秒待機し、 function を呼び出しますfsetInterval(f, n)関数はミリ秒fごとに呼び出します。n

setInterval(function(){
  console.log('test');
}, 60 * 60 * 1000);      

testこれは1 時間ごとに印刷されます。コード (require ステートメントを除く) をsetInterval(). しかし、それは私にはちょっと醜いようです。私はむしろ一緒に行きたい:

  1. スケジュールされたタスク ほとんどのオペレーティング システムには、タスクをスケジュールする方法があります。Windows では、これは「Scheduled Tasks」と呼ばれ、Linux では cron を探します。

  2. ライブラリを使用する回答中に気付いたように、これはその質問の複製と見なすことさえできます。

于 2013-02-14T06:33:48.650 に答える