async functions

이용원·2022년 11월 24일
0

JAVASCRIPT

목록 보기
31/34

promise위에 적용됨
코드를 깔끔하게 해줌

2개의 키워드
async
await

async

async 함수는 항상 promise 객체를 리턴
만약 async 함수가 값을 리턴한다면 그 promise 객체는 값으로 resolved된 것
만약 async 함수가 예외처리를 한다면 그 객체는 rejected된 것

함수를 선언할 때 async 키워드를 앞에 사용하면 비동기 함수가 된다.

hello와 hello2 모두 return값이 없기 때문에 undefinedreturn 예상
function hello (){
}
console.log(hello()); //undefined

async function hello2(){

}
console.log(hello2()); // Promise { undefined }

hello()undefined를 리턴해준데 반해 hello2()는 promise객체를 리턴해줬다
물론 return 값이 없어 내부의 값은 undefined

async function hello2(){
    return 3;
}
console.log(hello2()); // Promise { 3 }


//화살표 함수로도 만들 수 있다.
const hello3 = async ()=>{ }

console.log(hello3())




const login = async (username, password) => {
  if (!username || !password) throw "사용자 정보를 입력하세요";
  if (password === "hello") return "welcome";
  throw "비밀번호가 틀렸어요";
};

login("asdfasdf", "hello")
  .then((data) => {
  //then의 콜백함수의 data는 return 값
    console.log(data); // 'welcome'
    console.log("로그인 됐음");
  })
  .catch((err) => {
  //비밀번호가 없다면 "사용자 정보를 입력하세요" 있지만 틀리다면 비밀번호가 틀렸어요"
    console.log(err); 
  });


await

await 키워드는 sync로 선언된 함수 내부에서만 사용이 가능하다
await는 함수의 실행을 멈춘다 , promise가 resolved될 때까지

let rainbowFunction = async () => {
    await bodyColorChanger('red')
    await bodyColorChanger('blue')
    await bodyColorChanger('yellow')
    await bodyColorChanger('red')
    await bodyColorChanger('red')
    await bodyColorChanger('red')
    await bodyColorChanger('red')
};

rainbowFunction();

0개의 댓글

관련 채용 정보