如何使用节点js操作多个函数的结果集

时间:2013-08-04 08:37:34

标签: node.js function asynchronous callback

我有节点js文件restservice.js和mysql.js

在mysql.js中,我有两个函数:elementlevelpricing和pricingdetail

在restservice.js中我有api,其代码如下:

var workload = req.body; var workloadinfo = { workloadId:workload.workloadId,         ownerId:workload.ownerId,
        uniqueName:workload.uniqueName,         name:workload.name     }

if(workload.elements&&& workload.elements.length> 0)     {

    var elementlevelpricingSummary = {};
    var elementArray = [];
    var elementinfo = {};
    var metadataModified = {};
    var pricingDetail = {};


    async.forEachSeries(workload.elements, createResponse, function (err) {
        res.send(workloadinfo); 
    });


    function createResponse(elements,callback) {

        var resourceIdentifierArray = [];

        elementinfo = elements;

        resourceIdentifierArray.push(elements.uri);


        var resourceIdentifiers = resourceIdentifierArray.join(',');


        // Get element level pricing summary
        mysql.elementlevelpricing(resourceIdentifiers, function(result){

                    // do some stuff here

        return callback();

    });
};
};

我需要在mysql.js中调用函数pricingdetail并将结果追加到全局变量workloadinfo(已经应该有elementlevelpricing的结果集,并且可以说是在foreachSeries中发送的内容)。任何人都可以建议我以专业的方式来实现这个目标吗?

1 个答案:

答案 0 :(得分:0)

使用异步功能。 Node.js的重点是避免阻塞。 Node.js中的阻塞比线程环境中的阻塞更糟糕,因为没有任何其他线程(尽管可能存在其他群集进程)。您正在阻止可用的事件循环。这意味着您的整个服务器必须等待,在I / O完成之前完全没有工作。