이전 수업 & 수업 외 추가 내용
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문으로 예외처리를 사용한다.