[JAVA] Promise, async, await

김다은·2024년 7월 31일

JAVA

목록 보기
7/14
post-thumbnail

Promise, async, await는 JavaScript에서 비동기 프로그램을 다루는 중요한 개념이다.

Promise

: 비동기 작업의 완료 또는 실패를 나타내는 객체이다.
Promise는 세 가지 상태를 가질 수 있다.

  • Pending (대기 중) : 비동기 작업이 아직 완료되지 않은 상태
  • Fulfilled (이행됨) : 비동기 작업이 성공적으로 완료된 상태
  • Rejected (거부됨) : 비동기 작업이 실패한 상태

Promises는 resolvereject 함수를 인자로 받아, 작업이 성공하면 resolve 를 실패하면 reject 를 호출한다.

    let promise = new Promise((resolve, reject) => {
        // 비동기 작업 수행
        let success = true; // 예시로 성공 여부 결정
        if (success) {
            resolve("작업 성공!");
        } else {
            reject("작업 실패!");
        }
    });
    
    // Promise 사용
    promise
        .then(result => {
            console.log(result); // "작업 성공!" 출력
        })
        .catch(error => {
            console.log(error); // "작업 실패!" 출력
        });

Async

async 키워드는 함수가 Promise를 반환하도록 만든다. 이 키워드는 비동기 함수를 선언할 때 사용하며, 함수 내에서 await 키워드를 사용할 수 있다.

    async function fetchData() {
        return "데이터";
    }
    
    fetchData().then(data => console.log(data)); // "데이터" 출력

Await

await 키워드는 async 함수 내에서만 사용 가능하며, Promise가 처리될 때까지 함수 실행을 일시정지 시킨다. await은 Promise가 해결될 때까지 기다린 후, 그 결과값을 반환한다.
만약, Promise가 거부되면 await은 오류를 발생시킨다.

    async function fetchData() {
        let promise = new Promise((resolve, reject) => {
            setTimeout(() => resolve("데이터"), 1000);
        });
    
        let result = await promise; // Promise가 해결될 때까지 기다림
        console.log(result); // "데이터" 출력
    }
    
    fetchData();

💡 요약

Promise

: 비동기 작업의 완료 또는 실패를 나타내는 객체. thencatch 로 결과를 처리함

Async

: 함수를 비동기 함수로 만들어, 자동으로 Promise를 반환하도록 함

Await

: 비동기 함수 내에서 사용되어 Promise가 해결될 때까지 기다림

※ 참고
https://springfall.cc/article/2022-11/easy-promise-async-await

profile
꾸준함으로 성취하는 개발자

0개의 댓글