Promise() ìì±ì
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since â¨2015ë 7ìâ©.
Promise ìì±ìë ì£¼ë¡ íë¡ë¯¸ì¤ë¥¼ ì§ìíì§ ìë í¨ì를 ê°ì ë ì¬ì©í©ëë¤.
ìëí´ ë³´ê¸°
const promise1 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve("foo");
}, 300);
});
promise1.then((value) => {
console.log(value);
// Expected output: "foo"
});
console.log(promise1);
// Expected output: [object Promise]
구문
new Promise(executor);
매ê°ë³ì
executor-
resolveë°rejectì¸ì를 ì ë¬í ì¤í í¨ì. ì¤í í¨ìë íë¡ë¯¸ì¤ 구íì ìí´resolveìrejectí¨ì를 ë°ì ì¦ì ì¤íë©ëë¤(ì¤í í¨ìëPromiseìì±ìê° ìì±í ê°ì²´ë¥¼ ë°íí기ë ì ì í¸ì¶ë©ëë¤).resolveë°rejectí¨ìë í¸ì¶í ë ê°ê° íë¡ë¯¸ì¤ë¥¼ ì´ííê±°ë ê±°ë¶í©ëë¤. ì¤í í¨ìë ë³´íµ ì´ë¤ ë¹ë기 ìì ì ììí í 모ë ìì ì ëë´ë©´resolve를 í¸ì¶í´ íë¡ë¯¸ì¤ë¥¼ ì´ííê³ , ì¤ë¥ê° ë°ìí ê²½ì°reject를 í¸ì¶í´ ê±°ë¶í©ëë¤. ì¤í í¨ììì ì¤ë¥ë¥¼ ëì§ë©´ íë¡ë¯¸ì¤ë ê±°ë¶ë©ëë¤. ì¤í í¨ìì ë°íê°ì 무ìë©ëë¤.
ìì
Promise ê°ì²´ë new í¤ìëì ìì±ì를 ì¬ì©í´ ë§ëëë¤. ìì±ìë 매ê°ë³ìë¡ "ì¤í í¨ì"를 ë°ìµëë¤. ì´ í¨ìë ë§¤ê° ë³ìë¡ ë ê°ì§ í¨ì를 ë°ìì¼ íëë°, 첫 ë²ì§¸ í¨ì(resolve)ë ë¹ë기 ìì
ì ì±ê³µì ì¼ë¡ ìë£í´ 결과를 ê°ì¼ë¡ ë°íí ë í¸ì¶í´ì¼ íê³ , ë ë²ì§¸ í¨ì(reject)ë ìì
ì´ ì¤í¨íì¬ ì¤ë¥ì ìì¸ì ë°íí ë í¸ì¶íë©´ ë©ëë¤. ë ë²ì§¸ í¨ìë ì£¼ë¡ ì¤ë¥ ê°ì²´ë¥¼ ë°ìµëë¤.
const myFirstPromise = new Promise((resolve, reject) => {
// do something asynchronous which eventually calls either:
//
// resolve(someValue) // fulfilled
// or
// reject("failure reason") // rejected
});
í¨ìì íë¡ë¯¸ì¤ 기ë¥ì ì¶ê°íë ¤ë©´, ê°ë¨íê² íë¡ë¯¸ì¤ë¥¼ ë°ííëë¡ íë©´ ë©ëë¤.
function myAsyncFunction(url) {
return new Promise((resolve, reject) => {
const xhr = new XMLHttpRequest();
xhr.open("GET", url);
xhr.onload = () => resolve(xhr.responseText);
xhr.onerror = () => reject(xhr.statusText);
xhr.send();
});
}
ëª ì¸
| Specification |
|---|
| ECMAScript® 2026 Language Specification > # sec-promise-constructor > |