[부트캠프] JavaScript 7일차

RedPanda·2022년 7월 27일
0

이전 수업 & 수업 외 추가 내용

  • Ctrl + K + C : 드래그 주석 처리 (슬래시) / Ctrl + K + U : 주석 해제

  • setTimeout(callback, millisecond, parameter) : 파라미터가 있으면 콜백에 파라미터를 넣어 사용한다.

<비동기 정리>

  • JS는 싱글 쓰레드 방식으로 처리 : 하나의 실행 컨텍스트 스택을 가짐. -> 작업 처리에 문제가 생길 수 있음.

  • 브라우저의 테스크 큐와 이벤트 루프를 통해 JS의 엔진을 도와줌 : Web API에서 비동기적으로 처리하고 콜 스택이 비어있는지 확인 및 스택 푸시 -> JS 자체적인 작업 처리와 별개로 처리(비동기적 처리)

  • 비동기 처리 순서 : Call Stack -> Web API에서 작업 처리 -> Task Queue에 푸시 -> Call Stack 확인 -> 비어있으면 Call Stack에 푸시

필기 내용

<프로미스>

  • 콜백함수의 복잡성과 예외처리의 한계를 극복하기 위해 추가된 비동기 생성자 함수.

  • 단어 정리 :
    -- pending : 비동기 처리 수행 x, 프로미스 생성 직후
    -- fullfilled : 비동기 처리 성공 시 resolve(첫 인자값) 함수 호출
    -- rejected : 비동기 처리 실패 시 reject(두번째 인자값) 함수 호출

  • 내부 콜백 함수 실행 -> 성공시 resolve() 호출, 실패시 reject() 호출 -> .then으로 resolve의 파라미터를 받음, .catch로 reject의 파라미터를 받음. -> .finally를 실행 (이후에 then이 나오면 순서대로 실행)

  • catch는 오류 검출 코드이므로 여러번 사용해도 처음 실행된 catch만 정상적으로 실행된다.

  • Promise.all([callback1,callback2,...]) : 파라미터로 받은 callback 배열을 한번에 실행하게 함 (allSettled() 는 객체들의 배열을 반환 // state와 value를 가진 객체로 리턴)

  • 마이크로테스크 큐 : 테스크 큐와 유사하나 우선순위를 가지게 된다.

<async/await>

  • then, catch, finally 없이 동기처럼 결과 반환

  • async 함수 내에서 await 키워드를 사용해야 하며, 프로미스가 settled 상태가 될 때까지 기다리다가 resolve 결과를 리턴함.

  • await은 앞서 사용한 await이 끝날때까지 기다려 결과값을 가져오게 한다.

  • 예외는 한번만 실행하기 때문에 try/catch문으로 예외처리를 사용한다.

profile
끄적끄적 코딩일기

0개의 댓글