Reputation: 3430
In my node.js app, I have a code snipplet to compose a csv array:
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
}
Is there any more elegant (or correct) way to do this?
Upvotes: 0
Views: 112
Reputation: 12265
Just use 3rd party libraries for that.
var async = require('async');
function process(alerts, callback) {
// v--- or async.map(...) to do it in parallel
async.mapSeries(alerts, function(alert, cb) {
PersonDao.getContact(alert.name, function(error, contact) {
cb(error, "csv:" + contact + "|" + alert.msg);
});
}, callback);
}
Upvotes: 1