2012-04-25 133 views
2

我正在用node.io構建一個刮板。node.io:作業完成後,再次執行

我想要報廢的頁面每分鐘都有新內容。我希望每分鐘都能一次又一次地完成我的工作。 (好吧,我能做到這一點有一個bash腳本,但我想留在JavaScript) 這是一個基本的工作:

var nodeio = require('node.io'), options = {timeout: 10}; 

exports.job = new nodeio.Job(options, { 
    input: ['hello', 'foobar', 'weather'], 
    run: function (keyword) { 
     this.getHtml('http://www.google.com/search?q=' + encodeURIComponent(keyword), function (err, $) { 
      var results = $('#resultStats').text.toLowerCase(); 
      this.emit(keyword + ' has ' + results); 
     }); 
    } 
}); 

我怎麼能這樣做呢?我在node.js的初學者,我試過的setInterval周圍的工作(:沒有成功

+0

關於使用一段時間(真)和setTimeout的什麼(60000) – ControlAltDel 2012-04-25 15:40:43

+0

@ user1291492:作業從不開始 – 2012-04-25 15:46:22

+0

那麼你甚至測試過你的代碼?我看到node.io網站上有很多教程。也許這將是開始的地方 – ControlAltDel 2012-04-25 15:50:23

回答

3

試試這個(與 「節點<myfile.js>」,而不是 「node.io <myfile.js>」)運行:

var nodeio = require('node.io'), options = {timeout: 10}; 
var job = { 
    input: ['hello', 'foobar', 'weather'], 
    run: function (keyword) { 
     this.getHtml('http://www.google.com/search?q=' + encodeURIComponent(keyword), function (err, $) { 
     var results = 'test';//$('#resultStats').text.toLowerCase(); 
     this.emit(keyword + ' has ' + results); 
     }); 
    } 
}; 

setInterval(function(){ 
    nodeio.start(new nodeio.Job(options, job), options, function(){}); 
}, 5000); 

你正在運行到的問題是在node.io以下代碼塊退出的節點,當你運行作業時不提供回調:

//Default behaviour is to exit once the job is complete 
callback = callback || function (err) { 
    if (err) { 
     utils.status.error(err); 
    } 
    process.exit(); 
};