我有下面的函数来并行获取数据。提取数据完成后,结果将通过回调函数中的'results'变量提供。我需要参数化,而不是硬编码“产品”,“图像”等。我需要能够传递数组。 (即我需要说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)
    }
);
}

最佳答案

您正在寻找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)
    });
}

关于javascript - Node.js-使用异步库-async.parallel传递数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28749185/

10-11 05:32