2016-05-09 62 views
0

我的問題是每兩分鐘調用一個函數而Web服務器正在運行。所以,我的服務器開始是這樣的:如何在webserver運行時每2分鐘調用一次函數?

app.listen(1309, function(){ 
    console.log("server is listening"); 
    doSomething(); 
}); 

這是我的函數DoSomething的()

var doSomething = function(){ 
    while(true) { 
     sleep.sleep(10); 
     console.log("hello"); //the original function will be called here as soon as my code works :P 
    } 
}; 

所以,是的函數打印每10秒(10秒 「事業的測試用例,不想等待2分鐘atm)啓動我的網絡服務器後,但它不能收到任何獲取請求。 (用console.log測試過)

我試過沒有這個函數,它接收它們。所以我猜while循環阻塞了服務器的其餘部分。在服務器運行時,如何每2分鐘(或10秒)調用一次該函數,並且不要誤解任何請求?

回答

1

您需要使用setInteval功能:

const 2mins = 2 * 60 * 1000; 
var doSomething = function() { 
    setInterval(function() { 
    console.log("hello"); 
    }, 2mins); 
} 
+0

感謝這個解決我的問題,你能告訴我爲什麼而工作不螞蟻什麼區別給setInterval? – nova

+1

我想你使用[sleep](https://www.npmjs.com/package/sleep)npm包。這個包通過停止Node.js的事件循環來阻止所有JavaScript的執行。 'setInterval'這是一個原生的JavaScript函數,它在定義的延遲後運行相關函數。 – alexmac

相關問題