본문 바로가기
카테고리 없음

7/27 기록 (타이머 API)

by 홍재 2022. 7. 27.
  • new Promise()를 통해 생성한 Promise 인스턴스에는 어떤 메서드가 존재하나요? 각각은 어떤 용도인가요?
    : resolve ( 에러가 안 났을 때 실행되는 콜백함수 ) , reject ( 에러가 났을 때 실행되는 콜백함수 )
  • Promise.prototype.then 메서드는 무엇을 리턴하나요? 
    (순서가 있는 콜백함수)
    프로미스에 이행과 거부 처리기 콜백을 추가하고, 콜백이 호출될 경우 그 반환값으로 이행하며 호출되지 않을 경우(onFulfilled, onRejected 중 상태에 맞는 콜백이 함수가 아닐 경우) 처리된 값과 상태 그대로 처리되는 새로운 프로미스를 반환합니다.
  • Promise.prototype.catch 메서드는 무엇을 리턴하나요?
    프로미스에 거부 처리기 콜백을 추가하고, 콜백이 호출될 경우 그 반환값으로 이행하며 호출되지 않을 경우, 즉 이전 프로미스가 이행하는 경우 이행한 값을 그대로 사용해 이행하는 새로운 프로미스를 반환합니다.
  1. 직접 눈으로 확인해 보면 쉽게 이해할 수 있습니다. 반드시 다음을 실습해 보세요.
  2. catch를 테스트해 보고 싶다면, sleep 함수를 다음과 같이 수정합니다.
const sleep = (wait) => {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      reject(new Error('에러'));
    }, wait);
  });
};
// 수정한 sleep 함수

 3. runPromise 함수의 Promise 사용 부분에 catch메소드를 붙여 봅니다.

// 생략
.then(resetTitle)
.catch(err => {
  console.log(err);
})
// 수정한 runPromise 함수
  • Promise의 세 가지 상태는 각각 무엇이며, 어떤 의미를 가지나요?
    1. 대기(pending): 이행하지도, 거부하지도 않은 초기 상태.
    2. 이행(fulfilled): 연산이 성공적으로 완료됨. -> resolve , then
    3. 거부(rejected): 연산이 실패함. -> reject , catch
  • await 키워드 다음에 등장하는 함수 실행은 어떤 타입을 리턴할 경우에만 의미가 있나요?
    : promise ( = resolve { 비동기 -> 동기적으로})
  • await 키워드를 사용할 경우, 어떤 값이 리턴되나요?
    : then 대신 씀
  1. 직접 눈으로 확인해 보면 쉽게 이해할 수 있습니다. 반드시 다음을 실습해 보세요.
  2. sleep 함수를 아래와 같이 바꿉니다.
const sleep = (wait) => {
  return new Promise((resolve) => {
    setTimeout(() => {
      resolve("hello");
    }, wait);
  });
};

 3. 브라우저 개발자 도구의 콘솔을 열어 다음을 실행해 본 후, returnValue에 담긴 값을 확인해 보세요.

let returnValue = await sleep(1000);