Я новичок в 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();
}
я получаю сломанные данные, так что я вставленные функции сна:
res.on('data', function (chunk) {
data = data + chunk;
sleep(20);
});
Я до сих пор интересно, если есть лучший способ? Большое спасибо!
Примечание: это моя функция сна:
function sleep(milliseconds) {
var start = new Date().getTime();
for (var i = 0; i < 1e7; i++) {
if ((new Date().getTime() - start) > milliseconds){
break;
}
}
}
Подробнее:
- насчитайте длина данных 5000 ~ 5500 символов от 1 запрос
- я сделать 500 запросов
- так общее длина данных составляет 2700285
- данные кодируются base64
- без функции сна% 10 данных нарушается
- со сном (1) сломанные данных уменьшается до% 5
- со сном (10) сломанные данных уменьшается до% 2
- сна уменьшается (20) разбитые данные до% 1
- если я увеличиваю время сна, я получаю лучшие результаты.
Вы создаете глобальное значение с 'data = '';'. Сделайте его локальным с помощью 'var data = '';'. То же самое с 'var request',' var rem_url' и 'var options'. –
Я уже это сделал. но это вне функции. здесь полный код http://pastebin.com/5sgqNJV4 – margarita
wat. Извините, вам действительно нужно разбить это на более мелкие, названные функции, прежде чем я смогу посмотреть на это. –