0

Так что я в настоящее время пытается сделать HTTP код состояния проверки. Но по какой-то причине, имя хост ответа возвращается неопределенным, но я могу извлечь StatusCode ответа. Я хватаю его правильно?Получение имя хоста URL в цикле - Nodejs

var fs = require('fs'); 
var http = require('http'); 
var stdin = process.openStdin(); 
stdin.addListener('data', function (userInput) { 
    var urlListPath = userInput.toString().trim(); 
    fs.readFile(urlListPath, function (err, data) { 
     if (err) { 
      return console.log(err); 
     } 
    var urlArray = data.toString().split("\n"); 
     urlArray = urlArray.filter(Boolean); 

     for (var i = 0; i < urlArray.length; i++){ 
      http.get({hostname: urlArray[i]}, function(res){ 
       console.log(res.hostname + ' | ' + res.statusCode + ' | ' + res.statusMessage); 
      }); 
     } 
    }); 
}); 
+1

Положите его в функцию с URL в качестве параметра – bluesman

+0

хмм ... почему бы это сделать разницу? Каждая итерация получает новый объект, передаваемый http.get, и значение копируется из массива указанного объекта на каждой итерации, –

+1

Ах, я вижу, вы не получаете хозяина от Рез больше, вы захватывая его от исходного объекта. так что вы просто работали вокруг проблемы, это приемлемо. –

ответ

0

решаемые оборачивать в функции, как @bluesman предложил:

var fs = require('fs'); 
var http = require('http'); 
var stdin = process.openStdin(); 
stdin.addListener('data', function (userInput) { 
    var urlListPath = userInput.toString().trim(); 
    fs.readFile(urlListPath, function (err, data) { 
     if (err) { 
      return console.log(err); 
     } 
    var urlArray = data.toString().split("\n"); 
     urlArray = urlArray.filter(Boolean); 

     for (var i = 0; i < urlArray.length; i++){ 
      getHttpInfo(urlArray[i]); 
     } 
    }); 
}); 

function getHttpInfo(url){ 
    http.get({hostname: url}, function(res){ 
     console.log(url + ' : ' + res.statusCode + ' | ' + res.statusMessage); 
    }); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^