0

在我的 node.js 应用程序中,我有一个代码片段来组成一个 csv 数组:

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

}

有没有更优雅(或更正确)的方法来做到这一点?

4

1 回答 1

1

只需为此使用 3rd 方库。

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);
}
于 2012-10-21T10:26:05.133 回答