0

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

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

在 restservice.js 我有 api,其代码为:

var 工作量 = req.body; var 工作量信息 = { 工作量Id:工作量.workloadId,ownerId:工作量.ownerId,
uniqueName:工作量.uniqueName,名称:workload.name }

if(workload.elements && 工作量.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 中发送什么)。任何人都可以建议我实现这一目标的专业方式吗?

4

1 回答 1

0

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

于 2013-08-04T09:27:22.887 回答