0
在我的Node.js應用程序組成的結果是,我有一個代碼snipplet組成一個CSV陣列:的Node.js:更好的方式來處理從異步回調
function process(alerts, callback) {
var csvList = [];
var alertsLength = alerts.length;
alerts.forEach(function(alert) {
var name = alert.name;
var msg = alert.msg;
// retrieve from database
// NOTE: the asynchronous part!
PersonDao.getContact(name, function(error, contact) {
var csv = "csv:" + contact + "|" + msg;
csvList.push(csv);
if (csvList.length == alertsLength) {
// execute callback with the csvList
callback(csvList);
}
});
}); // end of alerts loop
}
是否有更優雅(或正確的)的方式來做到這一點?
我會使用'async.parallel' –
不,這是如何完成的(除了你可能忘記傳遞錯誤)。然而,有些庫通過實現使用這種標準模式的幫助函數來添加語法糖,特別是使用Deferred對象。 – Bergi
如果您打算使用'async',那麼[async.forEachSeries'](https://github.com/caolan/async#foreachseriesarr-iterator-callback)會更適合您,因爲您會失去訂單與'async.parallel'(如果訂單很重要)。 – JohnnyHK