aysnc, await

김선우·2022년 6월 1일
0

텍스트자바 스크립트는 싱글 스레드 프로그래밍 언어이기 때문에, 비동기 처리가 필수적이다.

  • 비동기처리 : 데이터를 불러올 떄 까지 기다리지 않는 통신.

비동기 처리는 그 결과가 언제 처리될지 모르기 때문에 동기적으로 처리되는 방법이 사용 되어야 하는데,
setTimeout, callback, promise 등의 방법이 대표적이지만 이 세 가지 방법보다 간단하게 , 그리고 세가지의 문제점을 보완해서 나온 방법이 aysnc, await 이다.

사용하는 방법도 매우 간단한데, function 키워드 앞에 aysnc, 비동기 처리되는 부분 앞에 await만 붙혀주면된다. (query 같은 데이터 값을 받아올 때)

 async function f() {
 let promise = new Promise((resolve, reject) => {
 setTimeout(() => resolve("완료!"), 1000)
 });
 let result = await promise; // 원래라면, promise.then(()=>{})을 통해 비동기를 받아야하지만
                              // await 키워드로 직관적 이어졌다.
 alert(result); // "완료!"
 }

async/await을 사용하면 await가 대기를 처리해주기 때문에 .then이 거의 필요하지 않다.

여기에 더하여 promise.catch 대신 일반 try..catch를 사용할 수 있다는 장점도 생긴다.

항상 그러한 것은 아니지만, promise.then을 사용하는 것보다 async/await를 사용하는 것이 대개는 더 편리하다.

그런데 문법 제약 때문에 async함수 바깥의 최상위 레벨 코드에선 await를 사용할 수 없다.

그렇기 때문에 관행처럼 .then/catch를 추가해 최종 결과나 처리되지 못한 에러를 다룬다.

profile
생각은 나중에..

0개의 댓글