Async and Promise 과제

Dongwoo Joo·2023년 3월 21일
0

codestates bootcamp

목록 보기
19/48

part-1

callback

const delay = (wait, callback) => {
  setTimeout(callback, wait);
  }

코드 해석하기

setTimeout은 비동기 함수이다.
만료된 후 함수나 지정한 코드를 실행하는 '타이머'를 설정한다.

매개변수 wait -> 시간(타이머)
callback -> 실행할 함수
callback 이라고 네이밍을 한 이유는, callback 자리에 들어올 함수가 콜백 함수이기 때문이다.
콜백 함수는 함수의 인자로 전달되는 함수이다. 다른 함수가 실행된 후, 호출(callback)되기 때문에 콜백 함수라 한다.

화살표 함수
인자 2개 wait, callback
setTimeout 이라는 함수를 실행시키고 인자를 (callback, wait) 바꿔서 넣어준다.

delay 함수 설명
delay 함수는 콜백 함수를 실행하기 전에, 두 가지 인수 사용
대기할 시간(밀리초)인 wait와, delay 후 실행할 함수인 callback
delay가 호출되면 setTimeout을 사용하여,
지정된 wait 시간이 경과된 후 콜백 함수가 실행되도록 예약한다.

PromiseConstructor

코드 해석하기

const sleep = (wait) => {
  return new Promise((resolve) => {
    setTimeout(() => {
      resolve('hello');
    }, wait);
  });
}

라인별 코드 설명

  • sleep 이라는 상수를 선언하고, 매개변수 wait을 사용하는 화살표 함수에 할당.
  • new Promise 객체를 생성하고 인수로 함수를 전달한다.
    이 함수는 Promise를 fulfill 하기 위해 호출될 함수이다.
  • setTimeout() 일정 시간이 지난 후 함수를 실행하도록 타이머를 설정한다.
  • resolve('hello'); 문자열 'hello' 값으로 resolve 함수를 호출한다.
  • wait은 함수를 실행하기 전에 대기할 시간을 밀리초 단위로 지정한다.

sleep 함수 설명
반환된 promise를 해결하기 전에, 대기할 시간(밀리초)인 wait 인수 하나만 사용
sleep이 호출되면 지정된 wait 시간이 경과 후 setTimeout 함수를 사용하여,
지정된 시간 동안 기다린 후, promise 객체를 반환한다.

공통점
delay, sleep 함수 모두 코드 실행을 지연시키는데 사용된다.
setTimeout 함수가 사용된다.

차이점
delay 함수는 아무것도 반환하지 않는다.
콜백 함수가 나중에 실행되도록 예약하기만 하면 된다.

part 2

callback

const fs = require("fs"); // 파일 시스템 모듈을 불러온다.

const getDataFromFile = function (filePath, callback) {
  fs.readFile(filePath, 'utf8', (err, data) => {
    if (err) { 
      callback(err, null); 
    }
    else {
      callback(null, data);
    }
    console.log(data);
  }) 
};

// getDataFromFile('README.md', (err, data) => console.log(data));

module.exports = { // 모듈 구문으로 getDataFromFile 함수를 export 한다.
  getDataFromFile
};

const fs = require('fs'); // 파일 시스템 모듈을 불러온다

fs.readFile(file[, options], callback)
-> 비동기적으로 파일 내용 전체를 읽는다.
-> 전달인자 3개를 받는다.

PromiseConstructor

const fs = require("fs");

const getDataFromFilePromise = filePath => { 
  return new Promise((resolve, reject) => {
    fs.readFile(filePath, 'utf8', (err, data) => {
      if (err) {
          // 1. err에 무언가 있으면 에러
        reject(err)
      } else {
        // 2. err에 무언가 없으면 ok
        resolve(data)
      }
    })
  })
};
module.exports = {
  getDataFromFilePromise
};

gDFP 함수는 filePath를 인자로 갖는 화살표 함수이다.
input: fetch * 2
output: { news{}, weather{}}

주말에 part 3,4,5 작성

profile
pursue nature

0개의 댓글