async / await 질문이요!
조회수 532회
const makeRequest = async () => {
const value1 = await promise1();
const value2 = await promise2(value1);
};
makeRequest();
// do other works
초보적인 질문일 것 같지만 궁금해서 이렇게 글을 남깁니다!
Promise에 대해서 async로 선언된 함수 내에서 중간값을 바로 활용할 수 있도록 2개의 promise에 대해서 await를 각각 이용했다고 하면
value1의 값이 받아지고난 다음 value2의 값이 받아지잖아요? (then 처럼) 그러면 결국 Code 뿐만 아니라 과정 자체도 Synchronous 해지는 것 아닌가요?
아니면 저렇게 then으로 promise를 걸어두고 저 함수는 빠르게 읽고 또 다른 작업으로 넘어가나요? 다른 작업을하면서 promise의 과정도 동시에 처리하는 것인가요?
감사합니다!
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
함수 내부에서는 실행 순서가 보장되는 것은 맞지만, await은 async 함수 내에서만 가능하기 때문에 코드가 동기식으로 변하는것은 아닙니다.
아래 예시를 보시면
makeRequest
함수에서 바로 리턴하는 값의 경우 비동기가 해결되지 않아pending
상태의Promise
가 반환되며, 비동기로 접근해야만 값을 사용할 수 있습니다.const makeRequest = async () => { const value1 = await new Promise((resolve) => resolve(2)); const value2 = await new Promise((resolve) => resolve(value1 * value1)); return { value1, value2 } }; const result = makeRequest().then(res => { console.log(res.value1) // 2 console.log(res.value2) // 4 }); // 먼저 실행 됨 console.log(result) // Promise{<pending>}
댓글 입력