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
ã§ãã
AggregateError
ã§ããã® errors
ããããã£ã«æå¦çç±ã®é
åãæ ¼ç´ããã¦ãã¾ããã¨ã©ã¼ã¯ãå®äºé ã«é¢ä¿ãªããééãããããã¹ã®é çªã«ãªãã¾ããæ¸¡ãããå復å¯è½ãªãã¸ã§ã¯ãã空ã§ãªããå¾
æ©ä¸ã®ãããã¹ãå«ãã§ããªãå ´åãè¿ããããããã¹ã¯ï¼åæçã§ã¯ãªãï¼éåæã«æå¦ãããã¾ã¾ã§ããPromise.any()
ã¡ã½ããã¯ãããã¹ã®ä¸¦è¡å¦çã¡ã½ããã® 1 ã¤ã§ãããã®ã¡ã½ããã¯ãæåã«å±¥è¡ããããããã¹ãè¿ãã®ã«æçãªãã®ã§ããæåã®ãããã¹ãå±¥è¡ãããå¾ã¯ç絡çã«å¦çããã®ã§ãä¸ã¤ãè¦ã¤ããã¨ãä»ã®ãããã¹ãå®äºããã®ãå¾
ã¤ãã¨ã¯ããã¾ããã
ã¡ã¢: æ¥æ¬èªã®æè¡ææ¸ã§ã¯ããã®ã¡ã½ãããè¤æ°ã®ãããã¹ã並åã«å¦çããã¨èª¬æããããã¨ãããã¾ãããå®éã«ã¯è¤æ°ã®ã¹ã¬ããã§ãããã¹ãå¦çãããããã§ã¯ãªããã¨ã«æ³¨æãã¦ãã ããã詳細ã¯ãããã¹ã®ä¸¦è¡å¦çãåç §ãã¦ãã ããã
Promise.all()
ãå±¥è¡ãããå¤ã® é
å ãè¿ãã®ã¨ã¯ç°ãªãã 1 ã¤ã®å±¥è¡å¤ã ããåå¾ãã¾ãï¼å°ãªãã¨ã 1 ã¤ã®ãããã¹ãå±¥è¡ããããã¨ãæ³å®ãã¦ãã¾ãï¼ãããã¯ãå±¥è¡ããããããã¹ã 1 ã¤ã ãå¿
è¦ã§ãã©ããå±¥è¡ããããã¯æ°ã«ããªãå ´åãæçãªãã¨ãããã¾ããããä¸ã¤ã®ç°ãªãå½¢ã«æ³¨æãã¦ãã ããããã®ã¡ã½ããã¯ã空ã®å復å¯è½ãªãã¸ã§ã¯ã ãåãåãã¨æå¦ãã¾ãããªããªããæ£ç´ã«è¨ãã¨ãå復å¦çãªãã¸ã§ã¯ãã«ã¯ãå±¥è¡ãããã¢ã¤ãã ãæ ¼ç´ããã¦ããªãããã§ãã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 ãæåã«å±¥è¡ããã
});
// ãã°åºå:
// 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: ${response.status}`);
}
const data = await response.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