Вся идея node.js заключается в его асинхронной природе.То, что вы пытаетесь сделать, - это нарушить шаблон проектирования, который лежит в его основе, пытаясь сделать его синхронным.
Из-за асинхронного характера метода get
вы не можете сделать это.Вы можете манипулировать кодом состояния только внутри функции обратного вызова.Таким образом, ваш getStatusCode
не нужно ничего возвращать.Вы можете сделать так, чтобы он принимал дополнительный параметр, который будет представлять обратный вызов, вызванный после того, как станут доступны результаты:
function getStatusCode(site, callback) {
var options = {
host: "127.0.0.1",
port: 8000,
path: site,
headers: {
Host: site
}
};
http.get(options, function(response) {
callback(response.statusCode);
});
}
и затем:
getStatusCode('http://...', function(statusCode) {
alert(statusCode);
});