S2 Unit3 - [JS/Node] 비동기 2 , 과제: 타이머 API, Node.js fs 모듈

딩쓰·2022년 9월 26일

코드스테이츠 TIL

목록 보기
4/19
post-thumbnail

Chapter2-5. 타이머 API

setTimeout(callback, millisecond)

-일정 시간 후에 함수를 실행

  • 매개변수(parameter): 실행할 콜백 함수, 콜백 함수 실행 전 기다려야 할 시간 (밀리초)
  • return 값: 임의의 타이머 ID
  • 1000 밀리초(1초)
setTimeout(function () {
  console.log('1초 후 실행');
}, 1000);
// 123

clearTimeout(timerId)

-setTimeout 타이머를 종료

  • 매개변수(parameter): 타이머 ID
  • return 값: 없음
const timer = setTimeout(function () {
  console.log('10초 후 실행');
}, 10000);
clearTimeout(timer);
// setTimeout이 종료됨.

setInterval(callback, millisecond)

-일정 시간의 간격을 가지고 함수를 반복적으로 실행

  • 매개변수(parameter): 실행할 콜백 함수, 반복적으로 함수를 실행시키기 위한 시간 간격 (밀리초)
  • return 값: 임의의 타이머 ID
setInterval(function () {
  console.log('1초마다 실행');
}, 1000);
// 345

clearInterval(timerId)

-setInterval 타이머를 종료

  • 매개변수: 타이머 ID
  • return 값: 없음
const timer = setInterval(function () {
  console.log('1초마다 실행');
}, 1000);
clearInterval(timer);
// setInterval이 종료됨.

Chapter3 - Node.js

Node.js

  • 비동기 이벤트 기반 JavaScript 런타임

  • 많은 API가 비동기로 작성

Chapter3-1. Node.js 모듈 사용법

  • 모듈: 어떤 기능을 조립할 수 있는 형태로 만든 부분
    모든 모듈은 '모듈을 사용하기 위해 불러오는 과정'이 필요한데 Node.js 에서는 코드 가장 상단에 require 구문을 이용하여 다른 파일을 불러옴
const fs = require('fs'); // 파일 시스템 모듈을 불러옵니다
const dns = require('dns'); // DNS 모듈을 불러옵니다

// 이제 fs.readFile 메서드 등을 사용할 수 있음
  • 3rd-party 모듈 :해당 프로그래밍 언어에서 공식적으로 제공하는 빌트인 모듈이 아닌 모든 외부 모듈을 말함. 서드 파티 모듈을 다운로드하기 위해서는 npm을 사용 ex) underscore (Node.js에 없는 모듈)
npm install underscore //터미널에서 다음과 같이 입력해 underscore를 설치

const _ = require('underscore'); // require 구문을 이용해 underscore를 사용
  • Node.js 내장 모듈의 다양한 모듈 예시

File System: 파일을 읽거나 저장하는 기능 등을 제공
readFile: 파일을 읽을 때
writeFile: 파일을 저장할 때

Chapter3-2. Node.js 공식 문서 가이드

참고할 사이트: fs.readFile의 공식 API 문서

fs.readFile: 로컬에 존재하는 파일을 읽어옴 (공식문서 참고하기)

fs.readFile(path[, options], callback)

fs.readFile 은 비동기적으로 파일 내용 전체를 읽음. 전달인자를 세 개 받음

path는 파일 이름을 전달인자로 받음. 네 가지 종류의 타입을 넘길 수 있지만 일반적으로 문자열(string)의 타입을 받음

fs.readFile('/etc/passwd', ..., ...)
// '/etc/passwd' 파일을 불러오는 예시

두 번째 전달인자 options는 넣을 수도 있고, 넣지 않을 수도 있음. -> 선택적 전달인자를 의미(대괄호)
options는 문자열 또는 객체 형태로 받음. 문자열로 전달할 경우 인코딩을 받음 -> 'utf8'

// /etc/passwd 파일을 'utf8'을 사용하여 읽음
fs.readFile('/etc/passwd', 'utf8', ...);
 
 두 번째 전달인자 options에 문자열을 전달한 경우
let options = {
  encoding: 'utf8', // utf8 인코딩 방식으로 연다
  flag: 'r' // 읽기 위해 연다
}
// /etc/passwd 파일을 options를 사용하여 읽음
fs.readFile('/etc/passwd', options, ...) 

 두 번째 전달인자 options에 객체를 전달한 경우

콜백 함수를 전달함. 파일을 읽고 난 후에 비동기적으로 실행되는 함수.
두 가지 매개변수가 존재함. 에러가 발생하지 않으면 errnull
data 에 문자열이나Buffer 라는 객체가 전달. data 는 파일의 내용임

fs.readFile('test.txt', 'utf8', (err, data) => {
  if (err) {
    throw err; // 에러를 던집니다.
  }
  console.log(data);
});
// fs.readFile로 파일의 데이터를 읽을 수 있음

과제- fs 모듈

Part 2

두번째 과제는 fs module 사용법("파일 열기", "파일 저장하기" 등)을 배우고 callback,Promise,promise all, async/await 를 사용해 데이터를 받아오는 함수를 완성하는 과제였다. 개념만 겨우 이해하고 문제를 푸니 개념과 문제와의 괴리감이 느껴졌다.. 과제를 풀 때 어떤 개념을 어디에 대입해야할지 감이 오지 않았고 어려웠다. 많은 복습이 필요할듯 😭

profile
Frontend Developer

0개의 댓글