실전 자바스크립트
퀴즈
프로미스 1
문제 1
다음 중 틀린 설명을 고르세요
자바스크립트에서 비동기 처리는 크게 콜백 패턴과 Promise로 나눌 수 있다
콜백 패턴은 여러 비동기 처리가 중첩될 때 Promise에 비해 복잡한 구조가 된다
Promise를 사용하면 비동기 코드를 순차적으로 작성할 수 있다
setTimeout은 콜백 패턴과 Promise 방식을 모두 지원한다
문제 2
다음 중 틀린 설명을 고르세요
Promise 상태는 pending, fulfilled, rejected로 나눌 수 있다
fulfilled, rejected를 묶어서 settled 상태라고 부르기도 한다
settled 상태에서 pending 상태로 바뀔 수 있다
pending 상태에서 settled 상태로 바뀔 수 있다
문제 3
다음 중 틀린 설명을 고르세요
p1은 영원히 pending 상태가 된다
p2는 즉시 fulfilled 상태가 된다
p3는 즉시 rejected 상태가 된다
p4는 즉시 fulfilled 상태가 된다
문제 4
다음 코드에 대한 설명으로 옳은 것을 모두 고르세요
requestData 함수가 Promise 객체를 반환하지 않으면 에러가 발생할 수 있다
requestData 함수의 실행이 종료되자마자 onResolve 또는 onReject 함수가 호출된다
requestData 함수가 pending 상태인 Promise 객체를 반환하면 3번 줄 코드도 실행되지 않고 기다린다
requestData 함수가 반환한 Promise 객체가 settled 상태가 될 때까지는 onResolve, onReject 함수 모두 호출되지 않는다
문제 5
다음 코드에 대한 설명으로 틀린 것을 고르세요
then에 입력된 함수가 무엇을 반환하든지 then은 항상 Promise 객체를 반환한다
(5번 줄처럼) Promise 객체를 반환하면 그 객체가 체인의 다음 실행을 결정한다
(9번 줄처럼) 숫자를 반환하면 그것을 데이터로하고 fulfilled 상태인 Promise 객체를 만들고, 그 객체가 체인의 다음 실행을 결정한다
(13번 줄처럼) 예외를 발생시키면 그것을 데이터로하고 rejected 상태인 Promise 객체를 만들고, 그 객체가 체인의 다음 실행을 결정한다
(16번 줄처럼) 아무것도 반환하지 않으면 undefined를 데이터로하고 rejected 상태인 Promise 객체를 만들고, 그 객체가 체인의 다음 실행을 결정한다
문제 6
다음 코드에 대한 설명으로 틀린 것을 모두 고르세요
3~4번 줄의 로그가 콘솔에 출력된다
3번 줄의 then에서는 새로운 Promise 객체를 만들지 않고, 2번 줄에서 만든 Promise 객체가 체인의 다음 실행을 결정한다
4번 줄의 then에서는 새로운 Promise 객체를 만들지 않고, 2번 줄에서 만든 Promise 객체가 체인의 다음 실행을 결정한다
6번 줄은 호출되지 않고 7번 줄이 호출된다
5번 줄의 then에서 (체인의 다음 실행을 결정하기 위해) 만드는 Promise 객체의 상태는 rejected 이다
9번 줄의 then에서 (체인의 다음 실행을 결정하기 위해) 만드는 Promise 객체의 상태는 fulfilled 이다
문제 7
다음 코드에 대한 설명으로 틀린 것을 고르세요
3번 줄에서 then에 입력된 함수는 호출되지 않는다
6번 줄의 catch는 30을 데이터로하고 fulfilled 상태인 Promise 객체를 만든다
9번 줄에서 then에 입력한 함수는 호출되지 않는다
문제 8
다음 코드에 대한 설명으로 틀린 것을 고르세요
4번 줄 코드는 실행되지 않는다
finally에 입력된 함수는 매개변수가 없다. 따라서 9번 줄의 data는 undefined이다
finally에 입력된 함수는 Promise 객체가 settled 상태이면 호출된다
finally에 입력된 함수가 예외를 발생시키지 않는다면 finally에서는 이전 Promise 객체가 체인의 다음 실행을 결정한다
13번 줄에서 undefined가 출력된다