Baseline Widely available
Promise.any()
ì ì ë©ìëë ìí ê°ë¥í ì¬ë¬ íë¡ë¯¸ì¤ë¥¼ ì
ë ¥ì¼ë¡ ë°ì ë¨ì¼ Promise
를 ë°íí©ëë¤. ì´ ë°íë íë¡ë¯¸ì¤ë ì
ë ¥ì¼ë¡ ë¤ì´ì¨ ì¬ë¬ íë¡ë¯¸ì¤ ì¤ íëë¼ë ì´íëë©´ ì´ë¥¼ ì´í ê°ì¼ë¡ íë íë¡ë¯¸ì¤ë¥¼ ë°íí©ëë¤. ì
ë ¥ì 모ë íë¡ë¯¸ì¤ê° ê±°ë¶ëë©´(ë¹ ë°ë³µì´ ì ë¬ë ê²½ì° í¬í¨) ìµì¢
ì ì¼ë¡ ì´ ë©ìëë ê±°ë¶ëë©°, ê±°ë¶ë ì¬ì ê° ë°°ì´ì´ í¬í¨ë AggregateError
ê° ë°íë©ëë¤.
const promise1 = Promise.reject(0);
const promise2 = new Promise((resolve) => setTimeout(resolve, 100, "quick"));
const promise3 = new Promise((resolve) => setTimeout(resolve, 500, "slow"));
const promises = [promise1, promise2, promise3];
Promise.any(promises).then((value) => console.log(value));
// Expected output: "quick"
구문 매ê°ë³ì ë°í ê°
ë¤ìì Promise
ì
ëë¤.
iterable
ì´ ë¹ì´ìë¤ë©´, ì´ë¯¸ ê±°ë¶ë íë¡ë¯¸ì¤ë¥¼ ë°íí©ëë¤.iterable
ë´ì íë¡ë¯¸ì¤ ì¤ íëë¼ë ì´íëë©´, ë¹ë기ì ì¼ë¡ ì´íë íë¡ë¯¸ì¤ë¥¼ ë°íí©ëë¤. ì´í ê°ì ê°ì¥ 먼ì ì´íë íë¡ë¯¸ì¤ì ì´í ê°ì
ëë¤.iterable
ë´ì 모ë íë¡ë¯¸ì¤ê° ê±°ë¶ëë©´, ë¹ë기ì ì¼ë¡ ê±°ë¶ë íë¡ë¯¸ì¤ë¥¼ ë°íí©ëë¤. ê±°ë¶ ì´ì ë errors
ìì±ì ì¬ë¬ ê±°ë¶ ì´ì ì ë°°ì´ì´ ìë AggregateError
ì
ëë¤. ì¤ë¥ë ìë£ ììì ê´ê³ìì´ ì ë¬ë íë¡ë¯¸ì¤ì ììëë¡ ì ë ¬ë©ëë¤. ì ë¬ë iterable
ì´ ë¹ì´ìì§ ìì§ë§ ë기 ì¤ì¸ íë¡ë¯¸ì¤ê° ìë ê²½ì°, ë°íë íë¡ë¯¸ì¤ë ì¬ì í ë¹ë기ì ì¼ë¡(ë기ì ì´ ìë) ê±°ë¶ë©ëë¤.Promise.any()
ë©ìëë íë¡ë¯¸ì¤ ëìì± ë©ìë ì¤ íëì
ëë¤. ì´ ë©ìëë ì´íëë 첫 ë²ì§¸ íë¡ë¯¸ì¤ë¥¼ ë°ííë ë° ì ì©í©ëë¤. íë¡ë¯¸ì¤ê° ì´íëë©´ ì¦ì ë¨ë½(short-circuit)ëë¯ë¡, íë를 ì°¾ì íìë ë¤ë¥¸ íë¡ë¯¸ì¤ë¤ì ìë£ë¥¼ 기ë¤ë¦¬ì§ ììµëë¤.
Promise.all()
ê³¼ ë¬ë¦¬, ì´í ê°ë¤ì ë°°ì´ì ë°ííë ëì íëì ì´í ê°ë§ ì»ìµëë¤(ì ì´ë íëì íë¡ë¯¸ì¤ê° ì´íëë¤ê³ ê°ì í ë). ì´ë íëì íë¡ë¯¸ì¤ë§ ì´íëë©´ ëê³ ì´ë¤ ê²ì´ ì´íëëì§ë ìê´ìì ë ì ì©í ì ììµëë¤. ë ë¤ë¥¸ ì°¨ì´ì ì ì´ ë©ìëê° ë¹ ìí ê°ë¥ ê°ì²´ë¥¼ ë°ì¼ë©´ ê±°ë¶íë¤ë ê²ì
ëë¤. ìëíë©´ ì¬ì¤ì ìí ê°ë¥ ê°ì²´ì ì´íëë íëª©ì´ ì기 ë문ì
ëë¤. Promise.any()
ì Promise.all()
ì Array.prototype.some()
ê³¼ Array.prototype.every()
ì ë¹êµí ì ììµëë¤.
ëí, 첫 ë²ì§¸ë¡ ì ì°©ë ê°(ì´í ëë ê±°ë¶)ì ë°ííë Promise.race()
ì ë¬ë¦¬, ì´ ë©ìëë 첫 ë²ì§¸ë¡ ì´íë ê°ì ë°íí©ëë¤. ì´ ë©ìëë 첫 ë²ì§¸ íë¡ë¯¸ì¤ê° ì´íë ëê¹ì§ 모ë ê±°ë¶ë íë¡ë¯¸ì¤ë¥¼ 무ìí©ëë¤.
Promise.any()
ë íë¡ë¯¸ì¤ê° 먼ì ê±°ë¶ëëë¼ë ì´íëë 첫 ë²ì§¸ íë¡ë¯¸ì¤ë¡ ì´íë©ëë¤. ì´ë 첫 ë²ì§¸ë¡ ì ì°©ëë íë¡ë¯¸ì¤ë¡ ì´í ëë ê±°ë¶ëë Promise.race()
ì ëì¡°ë©ëë¤.
const pErr = new Promise((resolve, reject) => {
reject("Always fails");
});
const pSlow = new Promise((resolve, reject) => {
setTimeout(resolve, 500, "Done eventually");
});
const pFast = new Promise((resolve, reject) => {
setTimeout(resolve, 100, "Done quick");
});
Promise.any([pErr, pSlow, pFast]).then((value) => {
console.log(value);
// pFast ê° ë¨¼ì ì´íë©ëë¤
});
// Logs:
// Done quick
AggregateErrorì í¨ê» ê±°ë¶
Promise.any()
ë ì´ë í íë¡ë¯¸ì¤ë ì´íëì§ ìì ê²½ì° AggregateError
ì í¨ê» ê±°ë¶ë©ëë¤.
const failure = new Promise((resolve, reject) => {
reject("Always fails");
});
Promise.any([failure]).catch((err) => {
console.log(err);
});
// AggregateError: No Promise in Promise.any was resolved
ì²ì ë¶ë¬ì¨ ì´ë¯¸ì§ ë³´ì¬ì£¼ê¸°
ì´ ììììë ì´ë¯¸ì§ë¥¼ ê°ì ¸ìì Blobì ë°ííë í¨ìê° ììµëë¤. Promise.any()
를 ì¬ì©íì¬ ë ê°ì ì´ë¯¸ì§ë¥¼ ê°ì ¸ìì ì¬ì© ê°ë¥í 첫 ì´ë¯¸ì§(ì¦, íë¡ë¯¸ì¤ê° ì´íë ì´ë¯¸ì§)를 íìí©ëë¤.
async function fetchAndDecode(url, description) {
const res = await fetch(url);
if (!res.ok) {
throw new Error(`HTTP error! status: ${res.status}`);
}
const data = await res.blob();
return [data, description];
}
const coffee = fetchAndDecode("coffee.jpg", "Coffee");
const tea = fetchAndDecode("tea.jpg", "Tea");
Promise.any([coffee, tea])
.then(([blob, description]) => {
const objectURL = URL.createObjectURL(blob);
const image = document.createElement("img");
image.src = objectURL;
image.alt = description;
document.body.appendChild(image);
})
.catch((e) => {
console.error(e);
});
ëª
ì¸ì ë¸ë¼ì°ì í¸íì± ê°ì´ 보기
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4