Node.js - 使用async lib - async.parallel传递一个Array

时间:2015-02-26 17:42:36

标签: javascript node.js asynchronous

我有以下功能并行获取数据。完成提取数据后,结果将通过'结果'回调函数中的变量。我需要参数化而不是硬编码产品','图像'我需要能够传递一个数组。 (即我需要说var fetchInParallel = function (id, res, names)names = ['products', 'images']

我该怎么做?我试了using forEach而没有运气。

var fetchInParallel = function (id, res) {

async.parallel(
    [
        function (callback) {
            commonService.findById('products', id, function (result) {
                callback(false, result);
            })
        },

        function (callback) {
            commonService.findById('images', id, function (result) {
                callback(false, result);
            })
        }

    ],

    function (err, results) {
        // handle errors code

        var products = results[0];
        var volatile = results[1];

        var target = stitch(products,images);

        res.send(target)
    }
);
}

2 个答案:

答案 0 :(得分:3)

您正在寻找map function

function fetchInParallel(id, names, res) {
    async.map(names, function(name, callback) {
        commonService.findById(name, id, function (result) {
            callback(null, result);
        });
    }, function (err, results) {
        if (err)
            … // handle error code
        var target = stitch(results); // combine names with results
        res.send(target)
    });
}

答案 1 :(得分:2)

你可以像这样使用async.map而不是并行;

var fetchInParallel = function (id, res,names) {
    async.map(names,
        function (name,callback) {
            commonService.findById(name, id, function (result) {
                callback(null, result);
            })
        },

        function (err, results) {

        }
    );
}