page(Doc) not found /ko/docs/Web/JavaScript/Guide/Details_of_the_Object_Model
Promise
ë ë¹ë기 ìì
ì ìµì¢
ìë£ ëë ì¤í¨ë¥¼ ëíë´ë ê°ì²´ì
ëë¤. ëë¶ë¶ ì¬ë¬ë¶ì ì´ë¯¸ ë§ë¤ì´ì§ promise를 ì¬ì©íì기 ë문ì ì´ ê°ì´ëììë ì´ë»ê² promise를 ë§ëëì§ ì¤ëª
í기ì ìì promiseì ì¬ì©ë²ì ëí´ ì¤ëª
í©ëë¤.
기본ì ì¼ë¡ promiseë í¨ìì ì½ë°±ì ì ë¬íë ëì ì, ì½ë°±ì 첨ë¶íë ë°©ìì ê°ì²´ì ëë¤.
ë¹ëê¸°ë¡ ìì± íì¼ì ìì±í´ì£¼ë createAudioFileAsync()
ë¼ë í¨ìê° ììë¤ê³ ìê°í´ë³´ì¸ì. í´ë¹ í¨ìë ìì± ì¤ì ì ëí ì 보를 ë°ê³ , ë ê°ì§ ì½ë°± í¨ì를 ë°ìµëë¤. íëë ìì± íì¼ì´ ì±ê³µì ì¼ë¡ ìì±ëììë ì¤íëë ì½ë°±, ê·¸ë¦¬ê³ ë¤ë¥¸ íëë ìë¬ê° ë°ìíìë ì¤íëë ì½ë°±ì
ëë¤.
createAudioFileAsync()
ë í¨ìë ìëì ê°ì´ ì¬ì©ë©ëë¤.
function successCallback(result) {
console.log("Audio file ready at URL: " + result);
}
function failureCallback(error) {
console.log("Error generating audio file: " + error);
}
createAudioFileAsync(audioSettings, successCallback, failureCallback);
â¦ëª¨ëí í¨ìë¤ì ìì ê°ì´ ì½ë°±ë¤ì ì ë¬íì§ ìê³ ì½ë°±ì ë¶ì¬ ì¬ì©í ì ìê² Promise를 ë°íí´ì¤ëë¤.
ë§ì½ createAudioFileAsync()
í¨ìê° Promise를 ë°ííëë¡ ìì íë¤ë©´, ë¤ìê³¼ ê°ì´ ê°ë¨íê² ì¬ì©ë ì ììµëë¤.
createAudioFileAsync(audioSettings).then(successCallback, failureCallback);
â¦ì¡°ê¸ ë ê°ë¨íê² ì¨ë³´ìë©´:
const promise = createAudioFileAsync(audioSettings);
promise.then(successCallback, failureCallback);
ì°ë¦¬ë ì´ì ê°ì ê²ì ë¹ë기 í¨ì í¸ì¶ì´ë¼ê³ ë¶ë¦ ëë¤. ì´ë° ê´ë¡ë ëª ê°ì§ ì¥ì ì ê°ê³ ììµëë¤. ê°ê°ì ëí´ íë² ì´í´ë³´ëë¡ í©ìë¤.
Guaranteesì½ë°± í¨ì를 ì ë¬í´ì£¼ë ê³ ì ì ì¸ ë°©ìê³¼ë ë¬ë¦¬, Promiseë ìëì ê°ì í¹ì§ì ë³´ì¥í©ëë¤.
then()
ì ì´ì©íì¬ ì¶ê°í ì½ë°±ì ê²½ì°ìë ìì ê°ìµëë¤.then()
ì ì¬ë¬ë² ì¬ì©íì¬ ì¬ë¬ê°ì ì½ë°±ì ì¶ê° í ì ììµëë¤. ê·¸ë¦¬ê³ ê°ê°ì ì½ë°±ì 주ì´ì§ ììëë¡ íë íë ì¤íëê² ë©ëë¤.Promiseì ê°ì¥ ë°ì´ë ì¥ì ì¤ì íëë chainingì ëë¤.
Chainingë³´íµ ë ê° ì´ìì ë¹ë기 ìì ì ìì°¨ì ì¼ë¡ ì¤íí´ì¼ íë ìí©ì íí ë³´ê² ë©ëë¤. ìì°¨ì ì¼ë¡ ê°ê°ì ìì ì´ ì´ì ë¨ê³ ë¹ë기 ìì ì´ ì±ê³µíê³ ëì ê·¸ ê²°ê³¼ê°ì ì´ì©íì¬ ë¤ì ë¹ë기 ìì ì ì¤íí´ì¼ íë ê²½ì°ë¥¼ ì미í©ëë¤. ì°ë¦¬ë ì´ë° ìí©ìì promise chainì ì´ì©íì¬ í´ê²°í기ë í©ëë¤.
then()
í¨ìë ìë¡ì´ promise를 ë°íí©ëë¤. ì²ìì ë§ë¤ìë promiseìë ë¤ë¥¸ ìë¡ì´ promiseì
ëë¤.
const promise = doSomething();
const promise2 = promise.then(successCallback, failureCallback);
ëë
const promise2 = doSomething().then(successCallback, failureCallback);
ë ë²ì§¸ promiseë doSomething()
ë¿ë§ ìëë¼ successCallback
or failureCallback
ì ìë£ë¥¼ ì미í©ëë¤. successCallback
or failureCallback
ëí promise를 ë°ííë ë¹ë기 í¨ìì¼ ìë ììµëë¤. ì´ ê²½ì° promise2
ì ì¶ê°ë ì½ë°±ì successCallback
ëë failureCallback
ì ìí´ ë°íë promise ë¤ì ë기í©ëë¤.
기본ì ì¼ë¡, ê°ê°ì promiseë ì²´ì¸ ììì ìë¡ ë¤ë¥¸ ë¹ë기 ë¨ê³ì ìë£ë¥¼ ëíë ëë¤.
ìì ìë ì¬ë¬ ë¹ë기 ìì ì ì°ìì ì¼ë¡ ìííë©´ ê³ ì ì ì¸ 'ì§ì¥ì ì½ë°± í¼ë¼ë¯¸ë'ê° ë§ë¤ì´ ì¡ììµëë¤.
doSomething(function (result) {
doSomethingElse(
result,
function (newResult) {
doThirdThing(
newResult,
function (finalResult) {
console.log("Got the final result: " + finalResult);
},
failureCallback,
);
},
failureCallback,
);
}, failureCallback);
모ëí ë°©ìì¼ë¡ ì ê·¼íë¤ë©´, ì°ë¦¬ë ì½ë°± í¨ìë¤ì ë°íë promiseì promise chainì íì±íëë¡ ì¶ê°í ì ììµëë¤:
doSomething()
.then(function (result) {
return doSomethingElse(result);
})
.then(function (newResult) {
return doThirdThing(newResult);
})
.then(function (finalResult) {
console.log("Got the final result: " + finalResult);
})
.catch(failureCallback);
then
ì ë겨ì§ë ì¸ìë ì íì (optional)ì
ëë¤. ê·¸ë¦¬ê³ catch(failureCallback)
ë then(null, failureCallback)
ì ì¶ì½ì
ëë¤. ì´ ííìì íì´í í¨ìë¡ ëíë´ë©´ ë¤ìê³¼ ê°ìµëë¤.
doSomething()
.then((result) => doSomethingElse(result))
.then((newResult) => doThirdThing(newResult))
.then((finalResult) => {
console.log(`Got the final result: ${finalResult}`);
})
.catch(failureCallback);
ì¤ì: ë°íê°ì´ ë°ëì ìì´ì¼ í©ëë¤, ë§ì½ ìë¤ë©´ ì½ë°± í¨ìê° ì´ì ì promiseì 결과를 ë°ì§ 못í©ëë¤. (íì´í í¨ì () => xë () => {return x;}ì ê°ìµëë¤.)
Chaining after a catchchainìì ìì
ì´ ì¤í¨í íìë ìë¡ì´ ìì
ì ìííë ê²ì´ ê°ë¥íë©° ë§¤ì° ì ì©í©ëë¤. (ì : catch
) ë¤ì ì를 ì½ì¼ììì¤:
new Promise((resolve, reject) => {
console.log("Initial");
resolve();
})
.then(() => {
throw new Error("Something failed");
console.log("Do this");
})
.catch(() => {
console.log("Do that");
})
.then(() => {
console.log("Do this, whatever happened before");
});
ê·¸ë¬ë©´ ë¤ì í ì¤í¸ê° ì¶ë ¥ë©ëë¤.
Initial Do that Do this, whatever happened before
ì°¸ê³ : "Do this" í ì¤í¸ê° ì¶ë ¥ëì§ ìì ê²ì 주ìê¹ê² ë³´ììì¤. "Something failed" ìë¬ê° rejectionì ë°ìì켰기 ë문ì ëë¤.
Error propagation'ì½ë°± ì§ì¥'ìì failureCallback
ì´ 3ë² ë°ìí ê²ì 기ìµí ê²ì
ëë¤. promise chainììë ë¨ í ë²ë§ ë°ìíë ê²ê³¼ ë¹êµëì£ .
doSomething()
.then((result) => doSomethingElse(result))
.then((newResult) => doThirdThing(newResult))
.then((finalResult) => console.log(`Got the final result: ${finalResult}`))
.catch(failureCallback);
기본ì ì¼ë¡ promise chainì ìì¸ê° ë°ìíë©´ ë©ì¶ê³ chainì ìëìì catch를 ì°¾ìµëë¤. ì´ê²ì ë기 ì½ëê° ì´ë»ê² ëìíëì§ ëª¨ë¸ë§ í ê²ì ëë¤.
try {
const result = syncDoSomething();
const newResult = syncDoSomethingElse(result);
const finalResult = syncDoThirdThing(newResult);
console.log(`Got the final result: ${finalResult}`);
} catch (error) {
failureCallback(error);
}
ë¹ë기 ì½ë를 ì¬ì©í ì´ë¬í ëì¹ì±ì ECMAScript 2017ìì async
/await
구문(Syntactic sugar) ìì ìµê³ ë¡ ëë ì ììµëë¤.
async function foo() {
try {
const result = await doSomething();
const newResult = await doSomethingElse(result);
const finalResult = await doThirdThing(newResult);
console.log(`Got the final result: ${finalResult}`);
} catch (error) {
failureCallback(error);
}
}
ì´ê²ì promise를 기ë°ì¼ë¡ í©ëë¤. doSomething()
ì ì´ì í¨ìì ê°ìµëë¤. 문ë²ì ì´ê³³ìì íì¸í ì ììµëë¤.
Promiseë 모ë ì¤ë¥ë¥¼ ì¡ìë´ì´, ìì¸ ë° íë¡ê·¸ëë° ì¤ë¥ê° ë°ìí´ë ì½ë°± ì§ì¥ì 근본ì ì¸ ê²°í¨ì í´ê²°í©ëë¤. ì´ë ë¹ë기 ìì ì ê¸°ë¥ êµ¬ì±ì íìì ì ëë¤.
Promise rejection eventsPromiseê° rejectë ëë§ë¤ ë ê°ì§ ì´ë²¤í¸ ì¤ íëê° ì ì ë²ìì ë°ìí©ëë¤.(ì¼ë°ì ì¼ë¡, ì ì ë²ìë window
ê±°ë, ì¹ ì커ìì ì¬ì©ëë ê²½ì°, Worker
, í¹ì ì커 ê¸°ë° ì¸í°íì´ì¤ì
ëë¤.) ë ê°ì§ ì´ë²¤í¸ë ë¤ìê³¼ ê°ìµëë¤.
rejectionhandled
executorì reject
í¨ìì ìí´ rejectê° ì²ë¦¬ ë í promiseê° reject ë ë ë°ìí©ëë¤.
unhandledrejection
promiseê° rejectëìì§ë§ ì¬ì©í ì ìë reject í¸ë¤ë¬ê° ìì ë ë°ìí©ëë¤.
(PromiseRejectionEvent
ì íì¸) ë ì´ë²¤í¸ìë ë©¤ë² ë³ìì¸ promiseì reason ìì±ì´ ììµëë¤. promise
ë rejectë promise를 ê°ë¦¬í¤ë ìì±ì´ê³ , reason
ì promiseê° rejectë ì´ì 를 ìë ¤ 주ë ìì±ì
ëë¤.
ì´ë¤ì ì´ì©í´ íë¡ë¯¸ì¤ì ëí ìë¬ ì²ë¦¬ë¥¼ ëì²´(fallback)íë ê²ì´ ê°ë¥í´ì§ë©°, ëí íë¡ë¯¸ì¤ ê´ë¦¬ì ë°ìíë ì´ìë¤ì ëë²ê¹ íë ë° ëìì ì»ì ì ììµëë¤. ì´ í¸ë¤ë¬ë¤ì 모ë ë§¥ë½ìì ì ìì (global)ì´ê¸° ë문ì, 모ë ìë¬ë ë°ìí ì§ì (source)ì ìê´ìì´ ëì¼í í¸ë¤ë¬ë¡ ì ë¬ë©ëë¤.
í¹í ì ì©í ì¬ë¡ : Node.jsë¡ ì½ë를 ìì±í ë, íí íë¡ì í¸ìì ì¬ì©íë 모ëì´ rejectë íë¡ë¯¸ì¤ë¥¼ ì²ë¦¬íì§ ìì ì ììµëë¤. ì´ë° ê²½ì° ë
¸ë ì¤í ì ì½ìì ë¡ê·¸ê° ë¨ìµëë¤. ì´ë¥¼ ìì§ìì ë¶ìíê³ ì§ì ì²ë¦¬í ìë ììµëë¤. ìëë©´ ê·¸ë¥ ì½ì ì¶ë ¥ì ì´ì§ë½íë ê²ì ë§ê¸° ìí´ ê·¸ë´ ìë ìì£ . ì´ë° ìì¼ë¡ unhandledrejection
(ìì´) ì´ë²¤í¸ë¥¼ ì²ë¦¬íë í¸ë¤ë¬ë¥¼ ì¶ê°íë©´ ë©ëë¤.
window.addEventListener(
"unhandledrejection",
(event) => {
/* You might start here by adding code to examine the
promise specified by event.promise and the reason in
event.reason */
event.preventDefault();
},
false,
);
ì´ë²¤í¸ì preventDefault()
ë©ìë를 í¸ì¶íë©´ reject ë íë¡ë¯¸ì¤ê° ì²ë¦¬ëì§ ììì ë JavaScript ë°íìì´ ê¸°ë³¸ ëìì ìííì§ ììµëë¤. ì´ ê¸°ë³¸ ëìì ëê° ì½ìì ì¤ë¥ë¥¼ 기ë¡íë ê²ì´ê¸° ë문ì, ì´ê²ì íì¤í NodeJS를 ìí ê²ì´ì£ .
ì ëë¡ íë ¤ë©´, ë¹ì°í ë§ì´ì§ë§, ì´ ì´ë²¤í¸ë¥¼ ê·¸ë¥ ë¬´ìí´ë²ë¦¬ê¸° ì ì rejectë íë¡ë¯¸ì¤ ì½ëì ì¤ì ë¡ ë²ê·¸ê° ìëì§ íì¤í ê²ì¬í´ì¼ í©ëë¤.
ì¤ëë ì½ë°± API를 ì¬ì©íì¬ Promiseë§ë¤ê¸°Promise
ë ìì±ì를 ì¬ì©íì¬ ì²ìë¶í° ìì± ë ì ììµëë¤. ì´ê²ì ì¤ëë API를 ê°ì ëë§ íìí©ëë¤.
ì´ìì ì¸ íë¡ê·¸ëë° ì¸ê³ììë 모ë ë¹ë기 í¨ìë promiseì ë°íí´ì¼ íì§ë§, ë¶ííë ì¼ë¶ APIë ì¬ì í success ë° / ëë failure ì½ë°±ì ì ë¬íë ë°©ìì¼ê±°ë¼ ìê°í©ëë¤. ì를 ë¤ë©´ setTimeout ()
í¨ìê° ììµëë¤.
setTimeout(() => saySomething("10 seconds passed"), 10000);
ìì ì¤íì¼ì ì½ë°±ê³¼ Promise를 í©ì¹ë ê²ì 문ì ê° ììµëë¤. í¨ì saySomething()
ì´ ì¤í¨íê±°ë íë¡ê·¸ëë° ì¤ë¥ê° ìì¼ë©´ ì무 ê²ë ì¡ì ë´ì§ ììµëë¤. setTimeout
ì 문ì ì ì
ëë¤.
ë¤ííë ì°ë¦¬ë setTimeout
ì Promiseë¡ ê°ì ì ììµëë¤. ê°ì¥ ì¢ì ë°©ë²ì ê°ë¥í ê°ì¥ ë®ì ìì¤ìì 문ì ê° ëë í¨ì를 ê°ì¼ ë¤ì ë¤ìë ì§ì í¸ì¶íì§ ìë ê²ì
ëë¤.
const wait = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
wait(10000)
.then(() => saySomething("10 seconds"))
.catch(failureCallback);
기본ì ì¼ë¡ promise constructorë promise를 ì§ì í´ê²°íê±°ë reject í ì ìë ì¤íì í¨ì를 ì¬ì©í©ëë¤. setTimeout()
ì í¨ììì failì´ ì¼ì´ëê±°ë errorê° ë°ìíì§ ì기 ë문ì ì´ ê²½ì° reject를 ì¬ì©íì§ ììµëë¤.
Promise.resolve ()
ì Promise.reject ()
ë ê°ê° ì´ë¯¸ resolveëê±°ë reject ë promise를 ì¬ë¬ë¶ì´ ì§ì ìì±í기ìí ë°ë¡ ê°ê¸°ì
ëë¤. ê°ë ì ì©íê² ì¬ì©ë©ëë¤.
Promise.all()
ì Promise.race()
ë ë¹ë기 ìì
ì ë³ë ¬ë¡ ì¤íí기ìí ë ê°ì§ êµ¬ì± ë구ì
ëë¤.
ì°ë¦¬ë ë³ë ¬ë¡ ìì ì ììíê³ ë¤ìê³¼ ê°ì´ 모ë ìë£ë ëê¹ì§ 기ë¤ë¦´ ì ììµëë¤.
Promise.all([func1(), func2(), func3()]).then(([result1, result2, result3]) => {
/* use result1, result2 and result3 */
});
ê³ ê¸ì§ JavaScript를 ì¬ì©íì¬ ìì°¨ì 구ì±ì´ ê°ë¥í©ëë¤.
[func1, func2, func3]
.reduce((p, f) => p.then(f), Promise.resolve())
.then((result3) => {
/* use result3 */
});
기본ì ì¼ë¡, ì°ë¦¬ë ë¹ë기 í¨ì ë°°ì´ì ë¤ìê³¼ ê°ì promise ì²´ì¸ì¼ë¡ ì¤ì
ëë¤. Promise.resolve().then(func1).then(func2).then(func3);
ì´ê²ì ì¬ì¬ì© ê°ë¥í í©ì± í¨ìë¡ ë§ë¤ ì ìëë°, ì´ë í¨ìí íë¡ê·¸ëë°ìì ì¼ë°ì ì¸ ë°©ìì ëë¤.
const applyAsync = (acc, val) => acc.then(val);
const composeAsync =
(...funcs) =>
(x) =>
funcs.reduce(applyAsync, Promise.resolve(x));
composeAsync()
í¨ìë ì¬ë¬ í¨ì를 ì¸ìë¡ ë°ìë¤ì´ê³ composition íì´í ë¼ì¸ì íµí´ ì ë¬ëë ì´ê¸° ê°ì íì©íë ì í¨ì를 ë°íí©ëë¤.
const transformData = composeAsync(func1, func2, func3);
const result3 = transformData(data);
ECMAScript 2017ììë async / await를 ì¬ì©íì¬ ìì°¨ì 구ì±ì ë³´ë¤ ê°ë¨íê² ìíí ì ììµëë¤.
let result;
for (const f of [func1, func2, func3]) {
result = await f(result);
}
/* use last result (i.e. result3) */
Timing
ëë¼ì(ìì 주. ìë¬ê° ëë¤ê±°ë, ì½ëê° ë¬¸ì ê° ì긴ë¤ê±°ë..íìëì ê·¸ ëë¼ì..)ì í¼í기 ìí´ then()
ì ì ë¬ë í¨ìë already-resolved promiseì ìë ê²½ì°ìë ë기ì ì¼ë¡ í¸ì¶ëì§ ììµëë¤.
Promise.resolve().then(() => console.log(2));
console.log(1); // 1, 2
ì¦ì ì¤íëë ëì ì ë¬ë í¨ìë ë§ì´í¬ë¡ íì¤í¬ ë기ì´ì ì ì¥ë©ëë¤. ì¦, ìë° ì¤í¬ë¦½í¸ ì´ë²¤í¸ 루íì íì¬ ì¤íì´ ëëê³ , ë기ì´ë ë¹ì´ìì ëì ì ì´ê¶ì´ ì´ë²¤í¸ 루íë¡ ë°íë기 ì§ì ì ì¤íë©ëë¤.
const wait = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
wait().then(() => console.log(4));
Promise.resolve()
.then(() => console.log(2))
.then(() => console.log(3));
console.log(1); // 1, 2, 3, 4
Nesting
ê°ë¨í promise ì²´ì¸ì íííê² ì ì§íë ê²ì´ ê°ì¥ ì¢ìµëë¤. ì¤ì²©ë ì²´ì¸ì ë¶ì£¼ìí 구ì±ì ê²°ê³¼ì¼ ì ììµëë¤. common mistakes를 참조íììì¤.
ì¤ì²©ì catch
문 ë²ì를 ì ííë ì ì´ êµ¬ì¡°ì
ëë¤. í¹í, ì¤ì²©ë catch
ë ì¤ì²©ë ë²ì ì¸ë¶ì ì²´ì¸ì ìë ì¤ë¥ê° ìë ë²ì ë° ê·¸ ì´íì ì¤ë¥ë§ ì¡ìµëë¤. ì¬ë°ë¥´ê² ì¬ì©íë©´ ì¤ë¥ 복구 ì ë ì íí 결과를 ì»ì ì ììµëë¤.
doSomethingCritical()
.then((result) =>
doSomethingOptional(result)
.then((optionalResult) => doSomethingExtraNice(optionalResult))
.catch((e) => {}),
) // Ignore if optional stuff fails; proceed.
.then(() => moreCriticalStuff())
.catch((e) => console.log("Critical failure: " + e.message));
ì¬ê¸°ì ìë ì íì ë¨ê³ë ë¤ì¬ ì°ê¸°ê° ìë ì¤ì²©ëì´ ìì§ë§ 주ìì ë°ê¹¥ 쪽 (
ë° )
ì ê·ì¹ì ì´ì§ ìì ë°°ì¹ë¥¼ íì§ìëë¡ ì¡°ì¬íì¸ì.
inner neutralizing catch
문ì doSomethingOptional()
ë° doSomethingExtraNice()
ìì ë°ìí ì¤ë¥ë¥¼ catch í íì ì½ëê° moreCriticalStuff()
ë¡ ë¤ì ììë©ëë¤. ì¤ìí ê²ì doSomethingCritical()
ì´ ì¤í¨íë©´ í´ë¹ ì¤ë¥ë ìµì¢
(ì¸ë¶) catch
ììë§ í¬ì°©ëë¤ë ê²ì
ëë¤.
promise chainsì ìì±í ë 주ìí´ì¼ í ëª ê°ì§ ì¼ë°ì ì¸ ì¤ìë ë¤ìê³¼ ê°ìµëë¤. ì´ë¬í ì¤ì ì¤ ëª ê°ì§ë ë¤ì ìì ìì ëíë©ëë¤.
// Bad example! Spot 3 mistakes!
doSomething()
.then(function (result) {
doSomethingElse(result) // Forgot to return promise from inner chain + unnecessary nesting
.then((newResult) => doThirdThing(newResult));
})
.then(() => doFourthThing());
// Forgot to terminate chain with a catch!
첫 ë²ì§¸ ì¤ìë ì ëë¡ ì²´ì¸ì ì°ê²°íì§ ìë ê²ì
ëë¤. ì´ê²ì ì°ë¦¬ê° ìë¡ì´ promise를 ë§ë¤ìì§ë§ ê·¸ê²ì ë°ííë ê²ì ììì ë ì¼ì´ë©ëë¤. ê²°ê³¼ì ì¼ë¡ ì²´ì¸ì´ ëì´ì§ê±°ë ì¤íë ¤ ë ê°ì ë
립ì ì¸ ì²´ì¸ì´ ê²½ìíê² ë©ëë¤. ì¦, doFourthThing()
ì doSomethingElse()
ëë doThirdThing()
ì´ ìë£ë ëê¹ì§ 기ë¤ë¦¬ì§ ìê³ ì°ë¦¬ê° ìëíì§ ììì§ë§ ì´ë¤ê³¼ ë³ë ¬ë¡ ì¤íë©ëë¤. ëí ë³ëì ì²´ì¸ì ë³ëì ì¤ë¥ ì²ë¦¬ 기ë¥ì ê°ì§ê³ ìì´ì ì¡ê¸° ì´ë ¤ì´ ì¤ë¥ê° ë°ìí©ëë¤.
ë ë²ì§¸ ì¤ìë ë¶íìíê² ì¤ì²©ëì´ ì²« ë²ì§¸ ì¤ì를 ê°ë¥íê² ë§ëë ê²ì ëë¤. ëí ì¤ì²©ì ë´ë¶ ì¤ë¥ ì²ë¦¬ê¸°ì ë²ì를 ì ííë©°, ìëíì§ ìì ìë¬ê° ìºì¹ëì§ ìë ì¤ë¥ê° ë°ìí ì ììµëë¤. ì´ ë³íì promise constructor anti-patternì ëë¤. ì´ í¨í´ì ì´ë¯¸ ì½ìì ì¬ì©íë ì½ë를 ê°ì¸ê¸° ìí´ promise ìì±ìì ì¤ë³µ ì¬ì©ê³¼ ì¤ì²©ì ê²°í©í©ëë¤.
ì¸ ë²ì§¸ ì¤ìë catch
ë¡ ì²´ì¸ì ì¢
ë£íë ê²ì ìë ê²ì
ëë¤. ì¢
ë£ëì§ ìì promise ì²´ì¸ì ëë¶ë¶ì ë¸ë¼ì°ì ìì ììíì§ ëª»í promise rejectionì ì´ëí©ëë¤.
ì¢ì ê²½í ë²ì¹ì íì promise ì²´ì¸ì ë°ííê±°ë ì¢ ê²°íë ê²ì´ë©°, ìë¡ì´ promise를 ì»ìë§ì ì¦ì ë°ííì¬ ë³µì¡ë를 ë®ì¶ë ê²ì ëë¤.
doSomething()
.then(function (result) {
return doSomethingElse(result);
})
.then((newResult) => doThirdThing(newResult))
.then(() => doFourthThing())
.catch((error) => console.log(error));
() => x
ì () => { return x; }
ì ì¶ì½íìì ì°¸ê³ íì¸ì.
ì´ì ì°ë¦¬ë ì ì í ì¤ë¥ ì²ë¦¬ 기ë¥ì ê°ì¶ ê²°ì ì±ìë ë¨ì¼ ì²´ì¸ì´ ììµëë¤.
async
/await
를 ì¬ì©íë©´ ëë¶ë¶ì 문ì 를 í´ê²°í ì ììµëë¤. ì´ë¬í 문ë²ì ê°ì¥ íí ì¤ìë await
í¤ìë를 빼먹ë ê²ì
ëë¤.
ì측í ì ìë ììë¡ ì¤íëë promise ë° ìì (ì: ì´ë²¤í¸ ëë ì½ë°±)ì´ ìë ìí©ì ì§ë©´íë©´ ë§ì´í¬ë¡ íì¤í¬ë¥¼ ì¬ì©íì¬ ìí를 íì¸íê±°ë promiseê° ì¡°ê±´ë¶ë¡ ìì±ë ë promiseì ê· íì ë§ì¶ë ê²ì´ ì¢ìµëë¤.
ë§ì´í¬ë¡ íì¤í¬ê° ì´ ë¬¸ì 를 í´ê²°íë ë° ëìì´ ë ì ìë¤ê³ ìê°ëë©´, queueMicrotask()를 ì¬ì©í´ì í¨ì를 ë§ì´í¬ë¡ íì¤í¬ë¡ ë기ì´ì ë£ë ë°©ë²ì ë§ì´í¬ë¡ íì¤í¬ ê°ì´ëìì ìì¸í ììë³´ììì¤.
See alsoRetroSearch 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