Baseline Widely available
finally()
㯠Promise
ã¤ã³ã¹ã¿ã³ã¹ã®ã¡ã½ããã§ããããã¹ã決å®ããã¨ãï¼å±¥è¡ããããæå¦ããããã®ã©ã¡ããï¼ã«å¼ã³åºããã颿°ãæºåãã¾ããç´ã¡ã«ä»ã® Promise
ãªãã¸ã§ã¯ããè¿ãããããããã¹ã®ä»ã®ã¡ã½ãããé£éå¼ã³åºããããã¨ãã§ãã¾ãã
ããã«ãã£ã¦ããããã¹ã® then()
ãã³ãã©ã¼ã¨ catch()
ãã³ãã©ã¼ã§ã³ã¼ããéè¤ãããã¨ãé¿ãããã¨ãã§ãã¾ãã
function checkMail() {
return new Promise((resolve, reject) => {
if (Math.random() > 0.5) {
resolve("Mail has arrived");
} else {
reject(new Error("Failed to arrive"));
}
});
}
checkMail()
.then((mail) => {
console.log(mail);
})
.catch((err) => {
console.error(err);
})
.finally(() => {
console.log("Experiment completed");
});
æ§æ
promiseInstance.finally(onFinally)
弿°
onFinally
ãã®ãããã¹ã決å®ããã¨ãã«éåæã§å®è¡ãã颿°ã§ããè¿å¤ãæå¦ããããããã¹ã§ãªãéãããã®è¿å¤ã¯ç¡è¦ããã¾ãã颿°ã¯å¼æ°ãªãã§å¼ã³åºããã¾ãã
åçã® Promise
ãè¿ãã¾ãããã®æ°ãããããã¹ã¯ãç¾å¨ã®ãããã¹ã®ç¶æ
ã«é¢ãããã常ã«è¿ãããã¾ã§å¾
æ©ãã¾ãã onFinally
ã§ã¨ã©ã¼ãçºçããããæå¦ããããããã¹ãè¿ãããå ´åãæ°ãããããã¹ã¯åãå¤ã§æå¦ããã¾ãããã以å¤ã®å ´åãæ°ãããããã¹ã¯ç¾å¨ã®ãããã¹ã¨åãç¶æ
ã§æ±ºå®ããã¾ãã
ãããã¹ã決å®ããå¾ãçµæã«é¢ãããä½ããã®å¦çãå¾å§æ«ãè¡ããããªããfinally()
ã¡ã½ããã¯å½¹ç«ã¡ã¾ãã
finally()
ã¡ã½ãã㯠then(onFinally, onFinally)
ã®å¼ã³åºãã¨ããä¼¼ã¦ãã¾ãããããã¤ãã®ç¹ãç°ãªãã¾ãã
onFinally
ã³ã¼ã«ããã¯ã¯ä¸å弿°ãåãåãã¾ããããã®ç¨éã§ã¯ãæå¦ãããçç±ãå±¥è¡ãããå¤ãªã©ãæä¾ããå¿
è¦ããªããããããæ°ã«ããªãã¨ãã«é©ãã¦ãã¾ããfinally()
ãå¼ã³åºãã¨ãå
ã®ãããã¹ã®æçµçãªç¶æ
ãåæ ããããã«ãªãã¾ããã§ãããä¾ãã°ã
Promise.resolve(2).then(() => 77, () => {})
ãæçµçã« 77
ã®å¤ã§å±¥è¡ããããããã¹ãè¿ãã®ã¨ã¯ç°ãªããPromise.resolve(2).finally(() => 77)
ã¯æçµçã« 2
ã®å¤ã§å±¥è¡ããããããã¹ãè¿ãã¾ããPromise.reject(3).then(() => {}, () => 88)
ãæçµçã« 88
ã®å¤ã§å±¥è¡ããããããã¹ãè¿ãã®ã¨ã¯ç°ãªããPromise.reject(3).finally(() => 88)
ã¯æçµçã« 3
ã®å¤ã§æå¦ããããããã¹ãè¿ãã¾ããã¡ã¢: finally
ã³ã¼ã«ããã¯ã®ä¸ã§ throw
ï¼ãããã¯æå¦ããããããã¹ãè¿ããã¨ï¼ãã¦ããè¿ããããããã¹ã¯æå¦ããã¾ããä¾ãã°ã Promise.reject(3).finally(() => { throw 99; })
㨠Promise.reject(3).finally(() => Promise.reject(99))
ã¯ã©ã¡ãã 99
ã¨ããçç±ãã¤ãã¦ãè¿ã£ã¦ãããããã¹ãæå¦ãããã¨ã«ãªãã¾ãã
catch()
ã¨åæ§ã«ã finally()
ã¯å
é¨çã«å¼ã³åºããããªãã¸ã§ã¯ãã® then
ã¡ã½ãããå¼ã³åºãã¾ãããã onFinally
ã颿°ã§ãªãå ´åã then()
㯠onFinally
ã両æ¹ã®å¼æ°ã¨ãã¦å¼ã³åºããã¾ãããã㯠Promise.prototype.then()
ã«ã¨ã£ã¦ãæçãªãã³ãã©ã¼ãæ·»ä»ãããªãã¨ãããã¨ãæå³ãã¾ããããã§ãªããã°ãthen()
ã¯å
é¨ã§ä½æããã 2 ã¤ã®é¢æ°ã§å¼ã³åºããã以ä¸ã®ãããªæ¯ãèãããã¾ãã
è¦å: ããã¯èª¬æç¨ã®ãã®ã§ãããããªãã£ã«ã§ã¯ããã¾ããã
promise.then(
(value) => Promise.resolve(onFinally()).then(() => value),
(reason) =>
Promise.resolve(onFinally()).then(() => {
throw reason;
}),
);
finally()
㯠then()
ãå¼ã³åºãã®ã§ããµãã¯ã©ã¹åã«å¯¾å¿ãã¦ãã¾ããããã«ãä¸è¨ã® Promise.resolve()
ã®å¼ã³åºãã«æ³¨ç®ãã¦ãã ãããå®éã«ã¯ã onFinally()
ã®è¿å¤ã¯ Promise.resolve()
ã¨åãã¢ã«ã´ãªãºã ã§è§£æ±ºããã¾ããã解決ããããããã¹ãæ§ç¯ããããã«ä½¿ç¨ãããå®éã®ã³ã³ã¹ãã©ã¯ã¿ã¼ã¯ãµãã¯ã©ã¹ã¨ãªãã¾ãã finally()
ã¯ãã®ã³ã³ã¹ãã©ã¯ã¿ã¼ã promise.constructor[Symbol.species]
ã§åå¾ãã¾ãã
let isLoading = true;
fetch(myRequest)
.then((response) => {
const contentType = response.headers.get("content-type");
if (contentType && contentType.includes("application/json")) {
return response.json();
}
throw new TypeError("Oops, we haven't got JSON!");
})
.then((json) => {
/* ããã« JSON ãå¦çãã¾ã */
})
.catch((error) => {
console.error(error); // ãã®è¡ã¯ã console = {} ã®å ´åãªã©ãä¾å¤ãçºçããå¯è½æ§ããã
})
.finally(() => {
isLoading = false;
});
仿§æ¸ ãã©ã¦ã¶ã¼ã®äºææ§ é¢é£æ
å ±
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