我有节点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中发送的内容)。任何人都可以建议我以专业的方式来实现这个目标吗?
答案 0 :(得分:0)
使用异步功能。 Node.js的重点是避免阻塞。 Node.js中的阻塞比线程环境中的阻塞更糟糕,因为没有任何其他线程(尽管可能存在其他群集进程)。您正在阻止可用的仅事件循环。这意味着您的整个服务器必须等待,在I / O完成之前完全没有工作。