본문 바로가기
React/개념

Async/Await

by hihijh826 2023. 10. 16.
728x90
반응형
SMALL

📍Async/Await 역할

비동기 처리 방식인 콜백 함수와 promise의 단점을 보완하고 개발자가 읽기 좋은 코드를 작성 할 수 있게 도와줌

 

📍비동기 처리 방식

웹페이지를 새로고침하지 않고도 데이터를 불러오는 방식

예 ) 댓글 입력시 웹 페이지의 새로고침 없이 댓글 영역만 업데이트되어 적용됨

https://joohee0826.tistory.com/26

 

동기 /비동기

(1) 동기 (Sync) 예 ) 폼 제출 폼 제출 시 웹 페이지를 새로고침하고 서버로부터 새로운 웹페이지를 받아서 화면에 표시하게 됨 서버에 한꺼번에 자료를 요청하고 수신이 완료될 때까지 기다림 (2)

joohee0826.tistory.com

 

📍 asnyc/await 사용 방법 

async function 함수명() {
  await 비동기_처리_메서드_명();
}

 

 

📍asnyc 

- function앞에서 사용 

- asnyc가 붙은 함수는 프라미스를 반환하고 프라미스가 아닌 것은 프라미스로 감싸서 반환 

 

async function f() {
  return 1;
}

f().then(alert); // 1
//result가 1인 이행 프라미스가 반환

📍await  

- async함수 안에서만 작동

- 프라미스가 처리 될 때 까지 기다리는역할

async function f() {

  let promise = new Promise((resolve, reject) => {
    setTimeout(() => resolve("완료!"), 1000)
  });

  let result = await promise; // 프라미스가 이행될 때까지 기다림 (*)

  alert(result); // "완료!"
}

f();

//함수를 호출하고, 함수 본문이 실행되는 도중에 (*)로 표시한 줄에서 실행이 잠시 '중단’되었다가 프라미스가 처리되면 실행이 재개된다.
이때 프라미스 객체의 result 값이 변수 result에 할당된다. 따라서 위 예시를 실행하면 1초 뒤에 '완료!'가 출력된다.

 

☑️예시

export const getStaticProps: GetStaticProps = async ( {params}) => {
    const postData = await getPostData(params.id as string)
    return{
        props: {
            postData
        }
    }
}

 

 

async function getPost() {
    const res  = await fetch('http://127.0.0.1:8090/api/collections/posts/records',
    { cache: 'no-store'});
    const data = await res.json();
    return data?.items as any[];
    //data가 있으면 items을 any타입으로 반환
}

 

 

//단순화한 코드
  const fetchPopularProjects = async () => {
    const response = await axios.get('/data.json');
    setPopularProjects(response.data);
  };
728x90
반응형
LIST

'React > 개념' 카테고리의 다른 글

#2 리액트 컴포넌트  (0) 2024.01.04
rafce  (0) 2024.01.02
#3 styled component  (0) 2023.10.14
Axios  (0) 2023.10.12
#8 map  (0) 2023.10.12