본문 바로가기
js/개발

js async & await

by 냉면돈가스 2024. 8. 7.

간단 사용법 작성

 

예시 케이스

:  a라는 함수에는 setTimeout이 걸려있고, a함수가 끝난 후 b함수를 실행하고싶다.

 

첫번째 작성 코드

const a = async () => {
    setTimeout(()=>{
        console.log('aa');
    },5000)
}

const b = () => {
    console.log('bb');
};

const c = async () => {
    await a();
    b();
}

 

a함수에 async가 달려있어 promise를 반환해주는 것은 맞다.

허나, 이는 a함수의 실행완료 시점을 보장해주진 않는다.

그보단 단순실행시점을 보장해준다고 보면 됨

 

쉽게 말하면 a함수를 실행하며 setTimeout을

호출한 것 만으로 promise가 반환됨

>> "난 실행요청했으니 그냥 promise 반환한다?"

>> setTimeout에 기재된 5초를 기다린 후 결과를 반환할때  promise를 반환해주지 않음

 

따라서 실행순서는

a함수 실행 > setTimeout 실행 > b함수실행 > b함수완료 > ... >... >... 5초지난후 실행중이던 스택 수행 후 'aa' 출력

원하는 동작방식과는 다르다.

 

promise를 a함수 setTimeout시작과 함께 반환하는 것이 아닌 5초후에 수행하려면,

setTimeout 문장안에 promise를 반환하도록 수정해야한다.

 

const a = () => {
    return new Promise((resolve) => {
        setTimeout(()=>{
            console.log('aa');
            resolve();
        },5000)
    })
}
const b = () => {
    console.log('bb');
};

const c = async () => {
    await a();
    b();
}

'js > 개발' 카테고리의 다른 글

js Object Literal Syntax Extension (키 값 동적으로 생성)  (0) 2024.10.13
js rest parameters  (0) 2024.10.08
js 생성시점때 형제스코프내에서 메소드를 찾고싶을때  (0) 2023.09.11
js 클로저  (0) 2023.02.23
js 생성자함수  (0) 2023.02.15

댓글