자스는 함수 내부에서 변수 선언하면 글로벌 변수랑 이름이 같으면 지역변수로 덮어씌워지잖아
자바같은 경우는 상위 변수 선택할때 this.변수명 하면 되는데 자스는 어떻게 함?
정확히 말하자면 아래 소스에서 var data에서 선언한 data를 function(err, data) {} 내부의 데이터에서 지칭하고 싶은데
어떻게 함?
var app = http.createServer(function (request, response) {
var _url = request.url;
var queryData = url.parse(request.url, true).query;
if (request.url == '/') {
_url = '/index.html';
queryData.id = 'Welcome'
}
if (request.url == '/favicon.ico') {
response.writeHead(404);
response.end();
return;
}
var data;
response.writeHead(200, { 'Content-Type': ' text/html' });
fs.readFile('sample.txt', 'utf8', function (err, data) {
data = data;
});
console.log(data);
response.end(data);
});
JS에 그딴기능은 없습니다 돌아가세요
아 리얼루 없음? app.data 이렇게 해도 안되더라
네 업구요 fs.readFile은 async 함수기 때문에 님처럼 쓰시면 respone.end(data) 에 data는 undefined입니다
네.. 그래서 물어본건데 자스는 역시 근본이 없군요
네 그럭기대문에 족같은 js말고 ts나 쓰시기 바랍니다
ts는 그런게 있나요? 이름부터 음탕한데 섹시하기까지
업는대요
ㅡㅡ
저리 짜도 응답 제대로 오냐?
ㄴㄴ
readFile을 프로미스로 바꾸고 await 걸던지 아니면 응답 보내는걸 콜백 안으로 넣으면 될듯
vat data 말고 this.data로 바꾸고, function(err, data) 부분을 arrow function으로 바꿔서, 그 내부에서 this.data = data; 로 지칭하게끔 하면 어떨까요?