[JavaScript] Promise 정리

λ°°λ˜₯회μž₯Β·2022λ…„ 8μ›” 9일

πŸ“ κ°œλ…

μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ 비동기 μ²˜λ¦¬μ— μ‚¬μš©λ˜λŠ” 객체

  • 비동기 처리 : νŠΉμ • μ½”λ“œμ˜ 싀행이 μ™„λ£Œλ  λ•ŒκΉŒμ§€ 기닀리지 μ•Šκ³  λ‹€μŒ μ½”λ“œλ₯Ό μ‹€ν–‰ν•  수 있게 ν•΄μ£ΌλŠ” 방식을 의미

μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ 비동기 ν•¨μˆ˜μΈ Web APIsλ₯Ό μ‹€ν–‰ν•  λ•Œ μ‹€ν–‰ν•œ μ½”λ“œκ°€ μ™„λ£Œλ  λ•ŒκΉŒμ§€ λŒ€κΈ°ν•˜μ§€ μ•Šκ³  λ°”λ‘œ λ‹€μŒ μ½”λ“œλ₯Ό μ‹€ν–‰ν•  수 μžˆλ„λ‘ ν•΄μ£Όκ³ , 비동기 ν•¨μˆ˜μ˜ 싀행이 μ™„λ£Œλ˜λ©΄ then() ν•¨μˆ˜λ₯Ό ν†΅ν•΄μ„œ κ·Έ 결과에 λŒ€ν•œ μ½”λ“œλ₯Ό μ‹€ν–‰ν•  수 있게 ν•΄μ€Œ


πŸ“Œ 객체 μ„ μ–Έ

  • new μƒμ„±μž ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•΄μ„œ 생성

  • μš”μ²­μ— λŒ€ν•œ 응닡이 μ„±κ³΅μ μœΌλ‘œ 였면 resolve() ν•¨μˆ˜μ— κ²°κ³Όλ₯Ό μ „λ‹¬ν•˜κ³ , 응닡에 μ‹€νŒ¨ν•˜λ©΄ reject() ν•¨μˆ˜μ— μ—λŸ¬λ₯Ό 전달함

const promise = new Promise((resolve, reject) => {
	if (/* 처리 성곡 */) {
		resolve("κ²°κ³Ό 데이터");
	} else {
		reject(new Error("μ—λŸ¬"));
	}
});

πŸ“Œ 예제

function getDataPromise() {
	return new Promise((resolve, reject) => {
        const xhr = new XMLHttpRequest();
        
        xhr.open("GET", "https://jsonplaceholder.typicode.com/posts/1");
        xhr.setRequestHeader("content-type", "application/json");
        xhr.send();
        
        xhr.onload = () => {
          if (xhr.status === 200) {
            const res = JSON.parse(xhr.response);
            resolve(res);
          } else {
            console.error(xhr.status, xhr.statusText);
            reject(new Error(xhr.status));
          }
		}
	});
}

getDataPromise().then((res) => {
	console.log(res);
	console.log("λ‹€μŒ μ½”λ“œλ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€.");
});


profile
μ–΄μ©Œλ©΄ 개발자

0개의 λŒ“κΈ€