비동기 splint

Jaemin Jung·2021년 6월 8일
0

JavaScript

목록 보기
8/14
post-thumbnail

nodejs는 기본적으로 동기

이벤트 루프

호출스택에서 순서대로 백그라운드에 들어가서 동시에 작업이 이뤄짐
작업이 완료된 순서대로 테스크 큐에 들어감 순서대로 출력됨

delay 함수와 sleep 함수의 차이점을 확인해보세요.

delay함수는 콜백을 이용해서 setTimeout을 실행한다.

const delay = (wait, callback) => {
  setTimeout(callback, wait);
}

sleep함수는 Promise를 사용해서 setTimeout을 실행한다.

 const sleep = (wait) => {
   return new Promise((resolve) => {
     setTimeout(resolve, wait);
   });
 }

Promise 실행함수가 가지고 있는 두 개의 파라미터, resolve, reject는 각각 무엇을 의미하나요?

  • resolve는 비동기 처리가 완료되었을때, 콜백함수의 인자 resolve를 실행하면 이행(Fulfilled) 상태가 된다.
    이때 resolve는 인자로 실행 결과를 받는다.

  • reject는 비동기 처리가 실패하였을때, 콜백함수의 인자 reject를 실행하면 실패(Rejected) 상태가 된다.
    이때 reject는 인자로 new Error()를 작성하여 error 메세지를 표출한다.

new Promise()를 통해 생성한 Promise 인스턴스에는 어떤 메소드가 존재하나요? 각각은 어떤 용도인가요?

all: ƒ all() -> 배열안에 비동기 메서드를 각각 요소로 넣고 결과를 반환한 배열을 반환한다.
catch: ƒ catch() -> 오류를 인자로 받아 오류를 출력해줌
constructor: ƒ Promise() -> Promise 생성자 함수
finally: ƒ finally() -> 성공 실패 여부 상관없이 콜백함수 실행
then: ƒ then() -> resolve나 reject의 인자값을 받아온다. 콜백함수 실행

Promise의 세가지 상태는 각각 무엇이며, 어떤 의미를 가지나요?

Pending(대기) : 비동기 처리 로직이 아직 완료되지 않은 상태

new Promise() 메서드를 호출하면 대기(Pending)상태가 된다.

Fulfilled(이행) : 비동기 처리가 완료되어 프로미스가 결과 값을 반환해준 상태

Rejected(실패) : 비동기 처리가 실패하거나 오류가 발생한 상태

await 키워드 다음에 등장하는 함수 실행은, 어떤 타입을 리턴할 경우에만 의미가 있나요?

await은 Promise가 fulfill되기를 기다렸다가, 해당 값을 리턴합니다.

await 키워드를 사용할 경우, 어떤 값이 리턴되나요?

const sleep = (wait) => {
  return new Promise((resolve) => {
    setTimeout(() => {
      resolve('hello')
    }, wait);
  });
}

let returnValue = await sleep(1000);
returnValue // outPut -> 'hello'

resolve로 전달한 값이 리턴되어 변수에 할당된다.

profile
내가 보려고 쓰는 블로그

0개의 댓글