[javascript] async/await

iinnuyh_s·2022년 10월 7일
0

1. async

  • async 키워드를 쓰면 Promise 오브젝트가 생성됨
async function fuc(){
  1+1
}

이 함수 자체가 Promise가 됨. 따라서 이 함수를 실행할 때 뒤에 then()을 붙일 수 있다.
(함수를 실행하면, 그 자리에 Promise 인스턴스가 남음)

func().then(function(){
  console.log('성공!')
});

함수 안에서 연산한 결과를 then 안에서 사용하고 싶다면,

async function cal(){
  return 1+1;
}
cal().then(function(result){ console.log(result) } );

이렇게 return 사용하면 됨.

  • then() 함수 대신 await 키워드를 쓸 수 있음
    - async 키워드를 사용한 함수 안에서는 await 을 사용할 수 있다.
    • await은 Promise.then() 대체라고 생각하면 됨

어떤 function 안에서 연산을 실행한 뒤, 성공/실패를 판정해주는 Promise를 만들고 싶다면

async function func2(){
  var cal = new Promise((resolve,reject)=>{
    var result = 1+1;
    resolve();
  });
  cal.then( console.log('성공입니다') );
}
func2();

이렇게 작성하면 된다. 이것을 더 간단하게 만든다면

async function func2(){
  var cal = new Promise((resolve,reject)=>{
    var result = 1+1;
    resolve(result);
  });
  var result = await cal;
  console.log(result);	//연산결과가 담기게 됨
}
func2();

이렇게 then 대신 await를 사용하면 됨.
await은 cal 이라는 Promise를 기다린 뒤, 완료되면 결과를 변수에 담아달라 라는 뜻.

await은 실패하면 에러가 나고 코드가 멈춤

  • 따라서 Promise가 실패할 경우, 코드실행을 멈추고 싶지 않다면 try-catch 를 사용하라
async function add(){
  var cal = new Promise((resolve,reject)=>{
    reject();	//실패판정
  });
  try{
    var result = await cal
  }catch{
    console.log('실패할 경우 실행될 코드');
  }

try-catch : try 안의 코드가 에러가 날 경우, catch 구문을 실행해 달라.

0개의 댓글