我在我的应用程序中添加了一些示例代码。 我正在调用更新数据功能。在一分钟内,我有150个http的电话。 所以由于这个代码我的cpu 100%,我想优化这段代码。 想要解决这个节点js代码的性能问题。
function doSynchronousLoop(data) {
if (data.length > 0) {
var loop = function(data, i) {
if (++i < data.length) {
var req = httpcall.request('http://myserverip/path', function(res) {
res.setEncoding('utf8');
res.on('data', function (chunk) {
setTimeout(function(){
loop(data, i);
}, 50);
});
});
req.on('error', function(err) {
console.error('error: ' ,err.stack.split("\n"));
});
req.write("");
req.end();
}else{
allData= [];
}
};
loop(data, 0);
}else{
allData= [];
}
function updateData(allData){
doSynchronousLoop(allData);
}
答案 0 :(得分:0)
您的回调会在每个&#34;数据&#34;上调用新的HTTP请求。事件。除非获取请求非常短,否则它会多次触发,因此在第一次激活其结束请求之前,将触发几次http.get调用。因此,如果您将回调更改为end
事件而不是data
事件,则它将同步运行。