javascript async & await, 예외처리방법

eunji hwang·2020년 3월 31일
0

Javascript

목록 보기
3/8

async & await

promise객체를 단순하게 사용 할 수 있는 방법으로 ES2017에 정식 채택되었다.

  • 함수 선언부에 async 키워드 함께 사용
  • 비동기 처리 할 곳 앞에 await 붙여 사용
  • await 뒤에는 반드시 promise를 반환해야 한다.

syntax

// 함수 선언할때 async 함께사용
// function 으로 함수 선언시 : async function funcName (){}
const getData = async (url) => {
  let v;
  // 예외처리를 위해 try{} catch{}문 사용
  try {
    // await로 downloadData()의 반환값을 기다렸다 v에 할당
    v = await downloadData(url); 
    return processDataInWorker(v); // 비동기작업에서 에러발생의 경우 현재 코드는 실행안됌!
  } catch (e) {
    console.log(e) // 에러출력 or 에러의 경우 처리할 로직작성하자
  }

}

예외처리

promise의 경우 .catch()로 예외처리(오류처리)를 하게 되는데 async & await를 사용할 땐 try & catch를 사용하여 오류를 잡아줘야 한다. promise사용보다 async & await를 사용하는 것이 더 간결하단 의견도 있지만, try, catch 를 사용하게 되면 비슷하게 조잡스러지는 것 같다. 하하핳

예외처리를 안할 경우 ?
에러가 났지만, 이후 로직을 계속 실행한다. 변수에 비동기처리 반환 값이 담겨야 하는데 undefined 상태가 되며, 해당 변수가 사용되는 곳에서 값에 따른 오류를 출력할 수 있다.

try {...} catch {...} finally{...} 란?

  • 비동기처리를 할때try {...} catch {...} finally{...}와 함께 사용하여 예외처리를 한다.
  • 예외처리 뿐만아닌 다양한 곳에 사용가능하며, break, continue, return 키워드와 함께 흐름 조작이 가능하다
  • try : 코드 시작 점
  • catch : 에러발생의 경우 try 즉시 중단하고 catch 실행
  • finally : 에러가 나든 안나든 무조건 마지막에 실행되는 곳 (try->finally 또는 try->catch->finally 로 실행됨)
profile
TIL 기록 블로그 :: 문제가 있는 글엔 댓글 부탁드려요!

0개의 댓글