A...sync? await! (2) 4.17

욱2·2023년 4월 17일
0

JS

목록 보기
9/14

  1. Async 선언시 Pending Promise 가 생성된다. new Promise 때랑 같다.

  2. 함수가 진행을 하다가 Await을 만날시 Async의 진행이 멈춘다.

  3. Await 뒤에 있는 함수가 실행된다. !주의! 여기 함수는 PROMISE 를 리턴해야한다.


의문점: 그럼 지금 과제에서 아래 부분은 왜 실행되는건가

 const getComment = await Comment.findById({
      _id: _commentId,
      postId: _postId,
    });

해결: 사실 Comment.findById가...Promise를 리턴한다는 사실!?@#?! 몽구스 connect 할때도 Promise가 사용됬었는데...Promise 너는 도대체....
"Mongoose provides a default promise implementation using the global Promise object"


await is usually used to unwrap promises by passing a Promise as the expression
unwrap = [ pending to settled ]
passing as expression = [ expects an expression that evaluates to a Promise ]


  1. 프로미스가 resolved 된다면 data는 settled된 프로미스 오브젝을 받는다

  2. 다시 Async 함수가 진행된다.

  3. 어떤 방식으로 풀어나가든 마지막에는 resolved Promise로 감싸진 값이 리턴된다.


그래서 이런 재미난 일도 가능하다.

async function foo() {
  return "bar";
}

const result = await foo();
//(70% 내생각) bar는 String bar 로 resolved된 Promise Object이다 사용할때는 자연스레 사용된다.
profile
성장하는 날 위한 기록

0개의 댓글

관련 채용 정보