본문 바로가기
IT기술(코딩)

자바스크립트 메모장 읽어오기 비동기 콜백 js read txt

by 크리에이트매이커 2022. 8. 31.
반응형

안뇽하세요~ 크리에이트메이커 입니다.

 

오늘은 제가 외주를 하면서 제안이 들어온 기능을 만들다 배운 js 소스코드를 공유해 볼까해서 글을 적었습니다.

 

일단 제안들어온 기능은 메모장에 정보를 입력해서 로그인 혹은 접속을 할 수 있게 해달라는 기능입니다.

 

언어는 js(자바스크립트)구요. 당연 제가 아는 지식도 있고, 더좋은 방법을 구하기 위해 구글을 뒤졌씁니다.

그 결과 이전에 제가썻던 방법보다는 간단하게 쓸수 있는 소스코드를 발견 했구요.

콜백을 해야 하는 코드 이므로, 순서가 있고 함수처리가 잘된 간단한 코드에 넣으면 편하게 쓸수 있을거 같아 올립니다~

 

자 코드 투척

function ReadInfoTXT(){
  var fs = require('fs');
  var fileContents;
  fs.readFile('info.txt', function (err, data) {
      if (err) throw err;
      fileContents = data;
      // ...
      console.log(fileContents.toString('utf-8')); //중요한부분1
      callbackfunction(fileContents); //중요한부분 2
  });
  
}


function callbackfunction(){
블라블라
}

대부분 아는 내용이라 생각합니다. 여기서 중요한 부분은 readFile은 비동기식 함수이기 때문에, 저 함수 안에서 따로 돕니다.

그래서 저기 중요한부분1 에 console.log를 readFile 밖에 적으면, undefined 가 표출이 됩니다.

즉, 해당 함수로 정보를 읽어왔을때, 그 정보를 이용하려면 콜백 함수가 필요합니다. 

 

콜백함수라 해도 뭐 정해진 틀은 없구요. 그냥 개인별로 제 코드 형식에 맞추어 코드를 짜면 됩니다.

 

readFile과 그 밖의 선언된 함수나 변수는 따로 돌고 있다고 생각하시면됩니다. 그렇기 때문에 readFile의 정보를 이용하기 위해서는 콜백으로 readFile안에 함수를 선언하거나 readFile안에 모든 코드를 짜시면 됩니다.

 

가끔 readFile함수 밖에서 console.log(fileContents); 를 했는데 undefined가 나온다는 분들이 있어서 적어봤습니다.

 

안좋은예)

function ReadInfoTXT(){
  var fs = require('fs');
  var fileContents;
  fs.readFile('info.txt', function (err, data) {
      if (err) throw err;
      fileContents = data;
     
  });

  console.log(fileContents); 
  
}

 

좋은예)

function ReadInfoTXT(){
  var fs = require('fs');
  var fileContents;
  fs.readFile('info.txt', function (err, data) {
      if (err) throw err;
      fileContents = data;
     

  console.log(fileContents);
  });

}

 

그럼 안뇽~

반응형