[Udemy] The Async Keyword

OROSY·2021년 5월 2일
0

TIL

목록 보기
7/18
post-thumbnail

Async

이번에는 비동기 함수의 꽃, async 키워드에 대해 알아보도록 합시다.

자세한 사항은 꼭 MDN 공식문서 - async function을 참고해주시기 바랍니다.

1. Async 키워드

1.1 Async return

const sing = async () {
  return 'LA LA LA LA'
}
sing() // Promise {<fulfilled>: 'LA LA LA LA'}

async 함수는 항상 Promise 객체를 반환합니다. async 함수에 값을 return한다면, Promise의 상태가 연산이 성공적으로 완료되었다는 이행(fulfilled) 값으로 갖게 됩니다.

sing().then((data)=>{
	console.log("PROMISE RESOLVED WITH:", data)
})

위의 Promise 를 활용했을 때와 같은 로직을 Async로 매우 쉽게 구현할 수 있는 것입니다.

1.2 Async throw

const sing = async () {
  throw new Error('UH OH')
  return 'LA LA LA LA'
}
sing() // Promise {<rejected>: Error: 'UH OH'}

throw 키워드는 return과 반대로 rejected 값으로 갖게 됩니다. throw new Error('UH OH') 이처럼 Error 생성자를 만들거나 throw 'UH OH'처럼 간단히 표현할 수도 있습니다.

위와 같은 Async 함수는 물론 return 값을 반환하기 전에 throw로 던져버렸기 때문에 이행(fulfilled) 값은 반환되지 않습니다.

하지만, 이는 실제로 에러가 발생하기 때문에 이후에 어떤 함수도 실행되지 않습니다. 이를 해결하기 위한 방법은 추후에 알아보도록 합시다.

1.3 추가 코드 예시

const login = async (username, password) => {
    if (!username || !password) throw 'Missing Credentials'
    if (password === 'corgifeetarecute') return 'WELCOME!'
    throw 'Invalid Password'
}
login('todd', 'corgifeetarecute')
    .then(msg => {
        console.log("LOGGED IN!")
        console.log(msg)
    })
    .catch(err => {
        console.log("ERROR!")
        console.log(err)
    })
profile
Life is a matter of a direction not a speed.

0개의 댓글