2024년 11월 20일 수요일

Promise 객체 사용 예

예제: 값을 반환하는 resolve

const result = await new Promise((resolve) => {
    setTimeout(() => {
        resolve("3초 후 완료"); // resolve에 값을 전달
    }, 3000);
});

console.log(result); // "3초 후 완료"


동작:

  1. setTimeout으로 3초 대기.
  2. 3초 후 resolve("3초 후 완료") 호출.
  3. Promise가 완료되면서 값 "3초 후 완료"가 반환되고, result 변수에 저장됨.

예제: 비동기 계산

const sum = await new Promise((resolve) => {
    const a = 5;
    const b = 10;

    setTimeout(() => {
        resolve(a + b); // 계산 결과 전달
    }, 2000);
});

console.log(`계산 결과: ${sum}`); // "계산 결과: 15"


동작:

  1. setTimeout으로 2초 대기.
  2. 2초 후 resolve(a + b) 호출 → Promise 완료.
  3. 계산 결과 15가 반환되어 sum에 저장됨.

예제: 복잡한 데이터 반환

const user = await new Promise((resolve) => {
    setTimeout(() => {
        resolve({
            name: "홍길동",
            age: 25,
            location: "서울",
        }); // 객체 전달
    }, 1000);
});

console.log(user.name); // "홍길동"
console.log(user.age); // 25


동작:

  1. 1초 후 resolve()로 객체를 반환.
  2. 반환된 객체를 user 변수에 저장.
  3. 객체의 속성에 접근하여 출력.

예제: reject와 함께 사용

try {
    const result = await new Promise((resolve, reject) => {
        const success = false; // 성공 여부

        setTimeout(() => {
            if (success) {
                resolve("작업 성공"); // 성공 시 메시지 전달
            } else {
                reject("작업 실패"); // 실패 시 에러 전달
            }
        }, 2000);
    });

    console.log(result); // 성공 시 실행
} catch (error) {
    console.error(error); // 실패 시 실행
}


동작:

  1. success 값에 따라 resolve 또는 reject 호출.
  2. 성공 → result에 "작업 성공" 저장.
  3. 실패 → catch 블록에서 "작업 실패" 처리.

요약

resolve에 값을 전달하면 Promise가 완료될 때 그 값이 반환됩니다. 이를 통해 계산 결과, 객체, 문자열 등 다양한 데이터를 await로 처리할 수 있습니다.

Sns

https://automatethem.tistory.com/409


https://blog.naver.com/automatethem/223667537404


https://automate-them.blogspot.com/2024/11/promise.html

댓글 없음:

댓글 쓰기

HTML 미리보기 도구 - 웹 개발을 간편하게 만드는 무료 온라인 유틸리티

HTML 미리보기 도구란 무엇인가요? HTML 미리보기 도구 는 HTML 코드를 작성하면서 실시간으로 결과를 확인할 수 있는 간단하고 유용한 온라인 툴입니다. 이 도구는 웹 개발자는 물론, HTML을 배우는 학생들, 그리고 빠르게 디자인 프로토타입...