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; });
- Express 3错误中间件未被调用
- 如何在Node.js中请求图像和输出图像
- Redis pub / sub – 同一个进程监听一个通道
- 我试图通过setInterval()重新渲染我的帕格模板。 这可能吗?
- 服务器端未定义的renderProps / React / React-Router + Node / Express.js的同构渲染
- 将快速会话存储在Cookie中
- 使用HBS条带快速查看渲染(消耗?)Handlebars客户端模板
- NodeJS Express – 单独处理404(Not Found)和405(Method Not Allowed)
- Node.js Express + Jade(活动类内衬物品)