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

そのためには、サードパーティのライブラリを使用してください。

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 に答える