프론트/JS

3. JS 심화(함수형 프로그래밍, 콜백, Promise, async - await)

초코chip 2024. 10. 28. 10:17

함수형 프로그래밍

  • JS는 함수형 프로그래밍의 특징을 가지고 있어서 인자로 함수를 전달하는 경우가 많음.
  • 함수형 프로그래밍은 코드의 간결성과 유연성을 높이는 데 유리함.
// 함수형 프로그래밍 예시 (인자를 함수로 전달함)
function ask(f1, f2, f3){
  if (f1("질문이다!")) {
    f2();
  } else {
    f3();
  }
}

ask(
  (username) => confirm(username),
  () => alert("대답"),
  () => alert("??")
);

 

 

동기 vs 비동기

  • JS는 대부분 비동기적으로 동작함 (HTTP 요청, 이벤트 핸들링 등)
  • 비동기 작업을 순차적으로 실행하려면 어떻게 해야 할까?
    • 콜백 함수, Promise, async/await 방식이 있음

 

콜백 함수

 콜백 함수: 후속 작업을 함수로 전달하여 지연 호출하는 방식

 단점: 콜백 지옥 발생 -> 코드 가독성 떨어짐


 

 

Promise

  • Promise: 비동기 작업을 체이닝으로 처리해 직관적으로 순차 실행 가능
  • .then() 체이닝으로 작업 순서 조절 가능
  • 주의!: 반드시 Promise 객체를 반환해야 함.
    • Promise 객체를 반환해야 .then()이나 .catch() 체이닝으로 후속 작업을 이어나갈 수 있음.

 

 

async - await

  • async - await: 비동기 작업을 동기식 코드처럼 작성 가능
  • 코드 가독성이 높아짐
  • async 함수는 자동으로 Promise 객체를 반환함.
    • async 함수 내부에서 Promise가 아닌 값을 반환해도, JS가 이를 자동으로 Promise로 감싸서 반환함.