Baseline Widely available
Promise
ì¸ì¤í´ì¤ì finally()
ë©ìëë íë¡ë¯¸ì¤ë¥¼ ì²ë¦¬í í(ì´íëê±°ë ê±°ë¶ë í) í¸ì¶í í¨ì를 ìì½í©ëë¤. ì´ ë©ìëë ì¦ì ëë±í Promise
ê°ì²´ë¥¼ ë°ííë¯ë¡ íë¡ë¯¸ì¤ ì²´ì´ëì´ ê°ë¥í©ëë¤.
finally()
ë©ìë를 ì¬ì©íë©´ 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
ì
ëë¤. ë§ì½ ì²ë¦¬ê¸°ìì ìì¸ê° ë°ìíê±°ë ê±°ë¶ë íë¡ë¯¸ì¤ë¥¼ ë°ííë©´, finally()
ê° ë°íí íë¡ë¯¸ì¤ë ëì ê·¸ ê°ì¼ë¡ ê±°ë¶ë©ëë¤. ì´ì¸ìë ì²ë¦¬ê¸°ì ë°í ê°ì ìë íë¡ë¯¸ì¤ì ìíì ìí¥ì ì£¼ì§ ììµëë¤.
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(() => {})
ë 3
ë¡ ê±°ë¶ë©ëë¤.ì°¸ê³ :
finally
ì½ë°± ë´ ìì¸ ë°ì ëë ê±°ë¶ë íë¡ë¯¸ì¤ë¥¼ ë°ííë ê²½ì°ìë ê±°ë¶ë íë¡ë¯¸ì¤ë¥¼ ë°íí©ëë¤. ì를 ë¤ì´Promise.reject(3).finally(() => { throw 99; })
ìPromise.reject(3).finally(() => Promise.reject(99))
ë 모ë99
ë¡ ê±°ë¶ë íë¡ë¯¸ì¤ë¥¼ ë°íí©ëë¤.
catch()
ì²ë¼ , finally()
ë ë´ë¶ì ì¼ë¡ ìì ì í¸ì¶í ê°ì²´ì then
ë©ìë를 í¸ì¶í©ëë¤. onFinally
ê° í¨ìê° ìë ê²½ì°, then()
ì ë ì¸ì 모ë onFinally
ë¡ ëì´ê° í¸ì¶ëë©°, ì¦ Promise.prototype.then()
ìê² ì ì©í ì²ë¦¬ê¸°ê° í¬í¨ëì§ ìëë¤ë ì미ì
ëë¤. ê·¸ ì¸ì ê²½ì° then()ì ë´ë¶ì ì¼ë¡ ìì±ë ë ê°ì í¨ìì í¨ê» í¸ì¶ëë©°, ë¤ìê³¼ ë¹ì·íê² ëìí©ëë¤.
ê²½ê³ : ë¤ìì ì¤ëª ì ìí ììì´ë©° ì¤ì í´ë¦¬íì´ ìëëë¤.
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[@@species]
ìì ì»ìµëë¤.
finally()
ì¬ì©í기
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