Search

Promise

κ°œμš”

β€’
Promise
β€’
Promise μƒνƒœ
β€’
μ£Όμš” λ©”μ†Œλ“œ
β€’
κΈ°λ³Έ μ˜ˆμ‹œ μ½”λ“œ
β€’
API 호좜 μ˜ˆμ‹œ μ½”λ“œ

Promise

비동기 μž‘μ—…μ˜ 성곡 λ˜λŠ” μ‹€νŒ¨ κ²°κ³Όλ₯Ό μ²˜λ¦¬ν•˜λŠ” 객체

β€œν•΄λ‹Ή μž‘μ—…μ΄ μ™„λ£Œλ˜κ±°λ‚˜ μ‹€νŒ¨ν–ˆμ„ λ•Œ κ²°κ³Όλ₯Ό μ œκ³΅ν•˜κ² λ‹€λŠ” 약속”

Promise μƒνƒœ

μƒνƒœ
μ„€λͺ…
μƒνƒœ μ „ν™˜ 방법
Pending
초기 μƒνƒœλ‘œ, 비동기 μž‘μ—…μ΄ 아직 μ™„λ£Œλ˜μ§€ μ•Šμ€ μƒνƒœμž…λ‹ˆλ‹€.
비동기 μž‘μ—…μ΄ μ‹œμž‘λ  λ•Œ
Fulfilled
비동기 μž‘μ—…μ΄ μ„±κ³΅μ μœΌλ‘œ μ™„λ£Œλœ μƒνƒœμž…λ‹ˆλ‹€. resolve ν•¨μˆ˜κ°€ ν˜ΈμΆœλ˜μ–΄ 이 μƒνƒœλ‘œ μ „ν™˜λ©λ‹ˆλ‹€.
resolve ν•¨μˆ˜κ°€ 호좜될 λ•Œ
Rejected
비동기 μž‘μ—…μ΄ μ‹€νŒ¨ν•œ μƒνƒœμž…λ‹ˆλ‹€. reject ν•¨μˆ˜κ°€ ν˜ΈμΆœλ˜μ–΄ 이 μƒνƒœλ‘œ μ „ν™˜λ©λ‹ˆλ‹€.
reject ν•¨μˆ˜κ°€ 호좜될 λ•Œ

μ£Όμš” λ©”μ†Œλ“œ

λ©”μ„œλ“œ
μ„€λͺ…
호좜 μ‹œμ 
then
Promiseκ°€ μ΄ν–‰λ˜μ—ˆμ„ λ•Œ λ˜λŠ” κ±°λΆ€λ˜μ—ˆμ„ λ•Œ ν˜ΈμΆœλ˜λŠ” μ½œλ°±μ„ μ„€μ •ν•©λ‹ˆλ‹€. onFulfilledλŠ” Promiseκ°€ μ„±κ³΅ν–ˆμ„ λ•Œ, onRejectedλŠ” μ‹€νŒ¨ν–ˆμ„ λ•Œ ν˜ΈμΆœλ©λ‹ˆλ‹€.
Promiseκ°€ μ΄ν–‰λ˜κ±°λ‚˜ κ±°λΆ€λ˜μ—ˆμ„ λ•Œ
catch
Promiseκ°€ κ±°λΆ€λ˜μ—ˆμ„ λ•Œ ν˜ΈμΆœλ˜λŠ” μ½œλ°±μ„ μ„€μ •ν•©λ‹ˆλ‹€. then의 두 번째 μΈμˆ˜μ™€ λ™μΌν•œ 역할을 ν•©λ‹ˆλ‹€.
Promiseκ°€ κ±°λΆ€λ˜μ—ˆμ„ λ•Œ
finally
Promiseκ°€ μ΄ν–‰λ˜λ“  κ±°λΆ€λ˜λ“  상관없이 항상 μ‹€ν–‰λ˜λŠ” μ½œλ°±μ„ μ„€μ •ν•©λ‹ˆλ‹€.
Promiseκ°€ μ΄ν–‰λ˜κ±°λ‚˜ κ±°λΆ€λ˜μ—ˆμ„ λ•Œ 항상 호좜

κΈ°λ³Έ μ˜ˆμ‹œ μ½”λ“œ

let promise = new Promise(function(resolve, reject) { // 비동기 μž‘μ—… μˆ˜ν–‰ let success = true; // μž‘μ—…μ΄ μ„±κ³΅ν–ˆλ‹€κ³  κ°€μ • if (success) { resolve("μž‘μ—… 성곡"); } else { reject("μž‘μ—… μ‹€νŒ¨"); } }); promise.then(function(result) { console.log(result); // μž‘μ—… 성곡 μ‹œ μ‹€ν–‰ }).catch(function(error) { console.error(error); // μž‘μ—… μ‹€νŒ¨ μ‹œ μ‹€ν–‰ }).finally(function() { console.log("μž‘μ—… μ™„λ£Œ"); // 성곡 λ˜λŠ” μ‹€νŒ¨μ™€ 관계없이 항상 μ‹€ν–‰ });
JavaScript
볡사

API 호좜 μ˜ˆμ‹œ μ½”λ“œ

function fetchData(url) { return new Promise((resolve, reject) => { fetch(url) .then(response => { if (!response.ok) { throw new Error("Network response was not ok"); } return response.json(); }) .then(data => resolve(data)) .catch(error => reject(error)); }); } fetchData("https://api.example.com/data") .then(data => console.log(data)) .catch(error => console.error("Error:", error)) .finally(() => console.log("Fetch attempt finished"));
JavaScript
볡사