Node.js请求数据被破坏

我是Node.js的新手

我通过Node.js从其他一些服务器获取数据:

function get_data(data_url, a, callback) { console.log('dataurl = ' + data_url); rem_url = url.parse(data_url); console.log('hostname = ' + rem_url.hostname); console.log('host = ' + rem_url.host); console.log('path = ' + rem_url.path); options = { hostname: rem_url.hostname, path: rem_url.path, keepAlive: true }; request = http.request(options, function (res) { data = ''; res.on('data', function (chunk) { data = data + chunk; sleep(20); }); res.on('end', function () { callback(a, data); }); res.on('error', function (err) { console.log("Error Occurred: " + err.message); }); }); request.on('error', function (e) { console.log('dataurl = ' + data_url); console.log('a = ' + a); console.log('problem with request: ' + e.message); }); request.end(); } 

我正在破坏数据,所以我插入了睡眠function:

 res.on('data', function (chunk) { data = data + chunk; sleep(20); }); 

我仍然想知道是否有更好的方法? 非常感谢你!

注意:这是我的睡眠function:

 function sleep(milliseconds) { var start = new Date().getTime(); for (var i = 0; i < 1e7; i++) { if ((new Date().getTime() - start) > milliseconds){ break; } } } 

更多细节 :

  • Avarage数据长度从1个请求5000到5500个字符
  • 我提出500个请求
  • 所以总的数据长度变成2700285
  • 数据是base64编码的
  • 没有睡眠function%10的数据被破坏
  • 随着睡眠(1)破碎的数据减less到%5
  • 随着睡眠(10)破碎的数据减less到%2
  • 随着睡眠(20)中断数据减less到%1
  • 如果我增加睡眠时间,我会得到更好的结果。

在阅读你的代码时,我注意到即使有相同的注释,你也需要在函数内部设置数据而不是在外面。 所以它成为局部variables。 在你的函数数据variables是全局的。 因为用sleep()函数可以得到更好的结果; JavaScript需要一些时间来覆盖全球数据。这就是为什么你会得到更好的结果。 只是这样写和删除var data; 从js文件的上面的行。

 var data = ''; res.on('data', function (chunk) { data = data + chunk; });