callback 함수와 생성자 함수 그리고 Promise

chaeyoung·2024년 1월 13일
0

callback

  • 외부로 부터 매개변수로 주어지는 함수
  • 전달시 함수 그 자체를 전달하는 것이 아닌 함수의 reference를 전달
const add = (a, b) => a + b;
const multiply = (a, b) => a * b;

function calculate(a, b, action) {
  if (a < 0 || b < 0) {
    return;
  }
  let result = action(a, b);
  console.log(result);
  return result;
}
  • action은 콜백함수이다.
  • 전달 당시 함수를 바로 호출해서 반환된 값을 전달하지 않고 함수를 가리키고 있는 reference(참조값)이 전달된다.
  • 함수는 고차함수안에서 필요한 순간 나중에 호출된다.

일급 객체

  • 일반 객체처럼 모든 연산이 가능한 것
  • 함수의 매개변수로 전달
  • 함수의 반환값
  • 할당 명령문
  • 동일 비교 대상

일급 함수

  • 함수가 일반 객체처럼 모든 연산이 가능
  • 함수의 매개변수로 전달
  • 함수의 반환값
  • 할당 명령문
  • 동일 비교 대상

고차 함수 (Higher-order function)

  • 함수를 반환하는 함수를 고차함수라고 한다.

생성자 함수

  • 비슷한 형태의 객체를 특정한 템플릿에 맞게 객체를 찍어내듯이 생성하는 함수

example

function Fruit(name, emoji) {
  this.name = name;
  this.emoji = emoji;
  this.display = () => {
    console.log(`${this.name}: ${this.emoji}`);
  };
}

// 기본적인 데이터만 인자로 제공해주면 정해진 템플릿을 활용해 객체를 쉽게 생성할 수 있다.
const apple = new Fruit("apple", "🍎");
const orange = new Fruit("orange", "🍊");
  • this: 객체 자기 자신을 가리킬 수 있다.
  • returnthis; 생략가능 => 생성자 함수에서는 this가 자동으로 return된다!

생성자 함수를 활용하여 Promise 객체 생성

example

function runInDelay(seconds) {
  console.log("시작");
  return new Promise((resolve, reject) => { // (resolve, reject) callback 함수를 매개변수로 하여 Promise 객체 생성
    if (!seconds || seconds < 0) {
      reject(new Error("seconds가 0보다 작음"));
    }
    setTimeout(resolve, seconds * 1000);
  });
}

runInDelay(2)
  .then(() => console.log("타이머 완료"))
  .catch(console.error)
  .finally(() => console.log("끝났다"));
profile
안녕하세요! 풀스택 개발자가 되고싶은 윤채영입니다. 제 블로그에 방문해주셔서 감사합니다!~~

0개의 댓글