2011-10-09 93 views
1

我正在構建一個調用各種函數的shell腳本。當所有功能都完成後,我想關閉數據庫連接並退出。我可以檢查異步功能是否正在運行?

如果我能以某種方式獲得一個事件,每次異步作業開始和結束我可以處理它,但那有可能嗎?

回答

2

我對你的問題,困惑 你可以用這種方式async模塊:

var async = require('async'); 
var exec = require('child_process').exec; 

async.parallel([ 
    //Spawn slow proccesses 
    function(cb){ exec('cat *.js bad_file | wc -l', cb) }, 
    function(cb){ exec('cat *.js bad_file2 | wc -l', cb) }, 
    function(cb){ exec('cat *.js bad_file3 | wc -l', cb) } 
], 
function(err){ 
    //If there is an error, the callback returns an error will be put in "err" 
    if(err != null) 
     console.log(err); 

    //All done, quit! 
    require("process").exit(); 
}); 
+0

可以工作,但因爲我的函數調用的API,更新數據庫和這樣的,我需要很多的這種邏輯和大量的回調。我到目前爲止做了我自己的:https://gist.github.com/1274105 – webjay

+0

我可以每隔5秒檢查一次過程是否有效? – webjay

+0

你試圖完成的事情還是有點朦朧。我發現NodeJs的「延續傳遞風格」對於知道何時完成一個作業(如果使用正確的話有一系列調用)是完美的。你能解釋一下你想做什麼嗎? – Nican

相關問題