Promise를 대체할 수 있는 ES8 문법이 존재한다.
async/await이라는 키워드인데 Promise와 then을 매우 쉽게 만들어준다.
async 키워드 사용시 Promise 오브젝트가 생성된다.
async function difficultCal () {
1 + 1
};
difficultCal().then(function(){
console.log("더하기 성공");
});
이렇게 함수 앞에 async 키워드만 하나 붙여줘도 Promise가 된다.
그래서 이 함수를 실행할 때 .then()을 붙일 수 있다.
async function difficultCal () {
return 1 + 1
};
difficultCal().then(function(a){
console.log("더하기 성공" + a);
});
return을 사용하게 되면 연산 결과를 then 내부에서 사용할 수 있게 된다.
then()대신 await 키워드 사용
async 키워드를 사용한 함수는 await이 사용가능하다.
await은 .then() 대용품이며 then보다 간단하다.
async function plus(){
let difficultCal = new Promise((resolve, reject))
let plusResult = 1 + 1;
resolve(plusResult);
});
let result = await difficultCal;
console.log(result);
};
plus();
await 사용예시
resolve()안에 있던 파라미터는 let result라는 변수에 저장된다.
비동기식 처리되는 코드를 담는다면 await 기다리는 동안 브라우저가 멈출 수 있다.
await는 실패하면 에러가 나고 코드가 멈춘다.
때문에 코드 실행을 멈추고 싶지 않을 때 try catch라는 자바스크립트 문법을 사용할 수 있다.
async function plus(){
let difficultCal = new Promise((resove,reject) => {
reject();
});
try { let result = await difficultCal}
catch { difficultCal Promise가 실패할 경우 실행할 코드 }
try catch라는 자바스크립트 문법인데,
try{} 안의 코드가 에러 나고 멈출경우 catch{} 내부 코드를 실행해준다.