Node.js 섹션1 알아두어야 할 자바스크립트

_upper·2023년 10월 16일

화살표 함수

add1, add2, add3, add4는 같은 기능을 하는 함수

  • add2: add1을 화살표 함수로 나타낼 수 있음
  • add3: 함수의 본문이 return만 있는 경우 return 생략
  • add4: return이 생략된 함수의 본문을 소괄호로 감싸줄 수 있음
  • not1과 no2도 같은 기능을 함(매개변수 하나일 때 괄호 생략)

화살표 함수가 기존 function() {}을 대체하는 건 아님(this가 달라짐)

  • logFriends 메서드의 this 값에 주목
  • forEach의 function의 this와 logFriends의 this는 다름
  • that이라는 중간 변수를 이용해서 logFriends의 this를 전달

forEach의 인자로 화살표 함수가 들어간 간 것에 주목

  • forEach의 화살표함수의 this와 logFriends의 this가 같아짐
  • 화살표 함수는 자신을 포함하는 함수의 this를 물려받음
  • 물려받고 싶지 않을 때: function() {}을 사용

promise, async/await

콜백 헬이라고 불리는 지저분한 자바스크립트 코드의 해결책

  • 프로미스: 내용의 실행은 되었지만 결과를 아직 반환하지 않은 객체
  • Then을 붙이면 결과를 반환함
  • 실행이 완료되지 않았으면 완료된 후에 Then 내부함수가 실행됨
  • Resolvef(성공리턴값) -> then으로 연결
  • Reject(실패리턴값) -> catch로 연결
  • Finally 부분은 무조거 실행됨

콜백 패턴(3중첩)을 프로미스로 바꾸는 예제

findOne, save 메서드가 프로미스를 지원한다고 가정

Promise.resolve(성공리턴값): 바로 resolve하는 프로미스

Promise.reject(실패리턴값): 바로 reject하는 프로미스

Promise.all(배열): 여러 개의 프로미스를 동시에 실행

  • 하나라도 실패하면 catch로 감
  • allSettled로 실패한 것만 추려낼 수 있음

async/await

이전 챕터의 프로미스 패턴 코드

  • Async/await으로 한 번 더 축약 가능

async function의 도입

  • 변수 = await 프로미스인 경우 프로미스가 resolve된 값이 변수에 저장
  • 변수 await 값인 경우 그 값이 변수에 저장

화살표 함수도 async/await 가능

Async 함수는 항상 promise를 반환(return)

  • Then이나 await을 붙일 수 있음

for await of

노드 10부터 지원

for await(변수 of 프로미스 배열)

  • resolve된 프로미스가 변수에 담겨 나옴
  • await을 사용하기 때문에 async 함수 안에서 해야함

0개의 댓글