티스토리 뷰

개발/Javascript

async function과 Promise

종후 2020. 4. 26. 17:51

비동기 작업(function A) 호출 시 await 키워드를 사용하게 되면 function A를 호출하는 함수(function B)는

반드시 async 키워드를 붙여주어야 한다.

async function B () {
  const result = await A()
}

단... 이렇게 await을 사용하기 위해선 function A가 Promise를 리턴하고 있어야 한다는 전제가 있다.

마찬가지로 function B를 다른 함수가 await을 이용하여 호출한다고 한다면

function B 는 Promise를 리턴하고 있어야 하는 것이다.

 

그래서 난 개발인생 내내 아래와 같은 짓을 해왔다.

async function B () {
  const result = await A()
  return Promise.resolve(result)
}

당연한 얘기지만 이렇게 하면 매우 잘 동작한다.

 

그러던 어느날... 회사에서 충격적인 코드를 보게 되었다.

async function B () {
  const result = await A()
  return result
}

띠용? 이거 에러 안나여??

 

그렇다. 에러 안난다. 그래서 난 찾아보았다. async에 대해... 그리고 오래 걸리지 않아 금방 알아내었다...

 

Asynchronous functions operate in a separate order than the rest of the code via the event loop, returning an implicit Promise as its result.

 

마지막을 잘 보자. 암시적으로 Promise 로 결과를 리턴한다.

이런 당연한걸 난 여태 몰랐다.

 

결론을 짓자면 아래 두 코드는 동일한 동작을 하게 된다.

왜 이제야 알았능가... 부들부들


이래서 근본이라는 것이 중요한 것이다. 근본없이 어깨너머로 어정쩡하게 배운거로 나대면 안된다.
나는 아직도 근본없는 개발자이다. 노력하자..

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함