• webmini life skin Ver 1.3.2 update view
  • 사이트 제작 문의 오랜 경험을 바탕으로 웹퍼블리싱을 해드립니다 제작 문의하기
  • 블로그 리뷰 문의 검색엔진최적화로 제품 리뷰를 해드립니다 리뷰 문의하기
Front-end/Javascript

[Javascript]비동기 처리 Promise, async/await 살펴보기

by 빽짱구 2024. 9. 2.

javascript에서 비동기 처리를 다루는 방법으로는 Promise와 async/await이 있습니다. 이 두 가지 방법은 비동기 작업(예: API 호출, 파일 읽기 등)을 처리하는 데 매우 유용합니다.

1. Promise 예제

Promise는 비동기 작업이 성공했는지 실패했는지에 따라 결과를 처리할 수 있는 객체입니다.

// 비동기 작업을 시뮬레이션하는 Promise 생성
const fetchData = () => {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            const success = true;  // 작업이 성공했다고 가정
            if (success) {
                resolve("데이터를 성공적으로 가져왔습니다.");
            } else {
                reject("데이터를 가져오는 데 실패했습니다.");
            }
        }, 2000);  // 2초 후에 작업이 완료됨
    });
};

// Promise 사용 예제
fetchData()
    .then(result => {
        console.log(result);  // 작업이 성공하면 이 블록이 실행됨
    })
    .catch(error => {
        console.error(error);  // 작업이 실패하면 이 블록이 실행됨
    });

 

위의 예제에서 fetchData 함수는 Promise를 반환합니다. 2초 후에 성공 또는 실패에 따라 resolve 또는 reject가 호출됩니다. then과 catch를 사용하여 결과를 처리할 수 있습니다.

2. async/await 예제

async/await은 Promise를 다루는 더 간결하고 직관적인 방법입니다. await 키워드는 Promise가 해결될 때까지 기다리고, async 키워드는 함수가 비동기임을 명시합니다.

// 비동기 작업을 시뮬레이션하는 함수 (Promise를 반환)
const fetchDataAsync = () => {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            const success = true;  // 작업이 성공했다고 가정
            if (success) {
                resolve("데이터를 성공적으로 가져왔습니다.");
            } else {
                reject("데이터를 가져오는 데 실패했습니다.");
            }
        }, 2000);  // 2초 후에 작업이 완료됨
    });
};

// async/await 사용 예제
const getData = async () => {
    try {
        const result = await fetchDataAsync();
        console.log(result);  // 작업이 성공하면 이 블록이 실행됨
    } catch (error) {
        console.error(error);  // 작업이 실패하면 이 블록이 실행됨
    }
};

// 비동기 함수 호출
getData();

 

위의 예제에서 getData 함수는 async 키워드를 사용하여 비동기 함수로 정의되었습니다. await 키워드는 fetchDataAsync가 반환하는 Promise가 해결될 때까지 기다리고, 그 결과를 result 변수에 할당합니다. 에러가 발생할 경우 try/catch 블록에서 처리합니다.

요약

  • Promise: 비동기 작업의 완료 또는 실패를 처리하기 위한 객체입니다. then, catch 메서드를 사용하여 결과를 처리합니다.
  • async/await: 비동기 코드를 더 간결하게 작성할 수 있게 해주는 구문입니다. await를 사용하여 Promise가 해결될 때까지 기다립니다.

이 두 가지 방법은 비동기 작업을 다룰 때 유용하며, 특히 async/await은 비동기 코드를 더 읽기 쉽게 만듭니다.

728x90