2015-09-04 123 views
0

我在寫一個腳本來批處理一些文本文件並將它們插入到mysql數據庫中。我試圖使用異步庫,因爲使用標準while循環阻塞事件隊列並阻止插入查詢運行,直到全部生成。由於這可能需要10分鐘或更長時間,我會暫停。所以,我試圖使用異步來避免阻塞主線程。但是,它沒有按預期工作。當我運行以下代碼的最簡單形式時,在命令行中使用node test.js,它只執行一次,而不是無限次。由於它是非阻塞的,似乎計算機正在儘早終止節點進程。這當然不是我想要的。爲什麼是這樣的,我如何才能讓它正常工作?Nodejs async.whilst()只運行一次

//this code should run forever, constantly printing "working". However it only runs once. 
var async = require('async')  
async.whilst(function(){return true},function(){console.log("working")}) 

回答

2

whilst()第二個參數是一個函數,發生在需要時當前迭代被調用的回調「完成」。

所以,如果你修改了代碼,這樣,你會得到你期待什麼:

var async = require('async'); 
async.whilst(function() { 
    return true 
}, function(cb) { 
    console.log("working"); 
    cb(); 
});