ES6ìì ëì ë ì ëë ìŽí°ë ìœë ëžë¡ì ì€íì ìŒì ì€ì§íë€ê° íìí ìì ì ì¬ê°í ì ìë í¹ìí íšìë€. ì ëë ìŽí°ì ìŒë° íšìì ì°šìŽë ë€ì곌 ê°ë€.
ì ëë ìŽí° íšìë íšì ížì¶ììê² íšì ì€íì ì ìŽê¶ì ìëí ì ìë€.
ìŒë° íšì륌 ížì¶íë©Ž ì ìŽê¶ìŽ íšììê² ëìŽê°ê³ íšì ìœë륌 ìŒêŽ ì€ííë€. ìŠ,íšì ížì¶ìë íšì륌 ížì¶í ìŽí íšì ì€íì ì ìŽí ì ìë€. ì ëë ìŽí° íšìë íšì ì€íì íšì ížì¶ìê° ì ìŽí ì ìë€. ë€ì ë§íŽ, íšì ížì¶ìê° íšì ì€íì ìŒì ì€ì§ìí€ê±°ë ì¬ê°ìí¬ ì ìë€. ìŽë íšìì ì ìŽê¶ì íšìê° ë
ì íë ê²ìŽ ìëëŒ íšì ížì¶ììê² ìëí ì ìë€ë ê²ì ì믞íë€.
ì ëë ìŽí° íšìë íšì ížì¶ìì íšìì ìí륌 ì£Œê³ ë°ì ì ìë€.
ìŒë° íšì륌 ížì¶íë©Ž 맀ê°ë³ì륌 íµíŽ íšì ìžë¶ìì ê°ì 죌ì
ë°ê³ íšì ìœë륌 ìŒêŽ ì€ííì¬ ê²°ê³Œê°ì íšì ìžë¶ë¡ ë°ííë€. ìŠ, íšìê° ì€íëê³ ìë ëììë íšì ìžë¶ìì íšì ëŽë¶ë¡ ê°ì ì ë¬íì¬ íšìì ìí륌 ë³ê²œí ì ìë€. ì ëë ìŽí° íšìë íšì ížì¶ìì ìë°©í¥ìŒë¡ íšìì ìí륌 죌곱ë€ì ì ìë€. ë€ì ë§íŽ, ì ëë ìŽí° íšìë íšì ížì¶ììê² ìí륌 ì ë¬í ì ìê³ íšì ížì¶ìë¡ë¶í° ìí륌 ì ë¬ë°ì ìë ìë€.
ì ëë ìŽí° íšì륌 ížì¶íë©Ž ì ëë ìŽí° ê°ì²Žë¥Œ ë°ííë€.
ìŒë° íšì륌 ížì¶íë©Ž íšì ìœë륌 ìŒêŽ ì€ííê³ ê°ì ë°ííë€. ì ëë ìŽí° íšì륌 ížì¶íë©Ž íšì ìœë륌 ì€ííë ê²ìŽ ìëëŒ ìŽí°ë¬ëžìŽë©Žì ëìì ìŽí°ë ìŽí
ë ì ëë ìŽí° ê°ì²Žë¥Œ ë°ííë€.
ì ëë ìŽí° íšìë function í€ìëë¡ ì ìžíë€. ê·žëŠ¬ê³ íë ìŽìì yield ííìì í¬íšíë€. ìŽê²ì ì ìžíë©Ž ìŒë° íšì륌 ì ìíë ë°©ë²ê³Œ ê°ë€.
// ì ëë ìŽí° íšì ì ìžë¬ž
function* genDecFunc() {
yield 1;
}
// ì ëë ìŽí° íšì ííì
const getExpFun = function* () {
yield 1;
}
// ì ëë ìŽí° ë©ìë
const obj = {
* genObjMethod() {
yield 1;
}
};
// ì ëë ìŽí° íŽëì€ ë©ìë
clas MyClass {
* genClsMethod() {
yield 1;
}
}
ìì€í°ëŠ¬ì€í¬(*)ì ìì¹ë function í€ìëì íšì ìŽëŠ ì¬ìŽëŒë©Ž ìŽëë ì§ ìêŽìë€. ë€ì ìì ì ì ëë ìŽí° íšìë 몚ë ì íšíë€. íì§ë§ ìŒêŽì±ì ì ì§íêž° ìíŽ function í€ìë ë°ë¡ ë€ì ë¶ìŽë ê²ì ê¶ì¥íë€.
function* genFunc() { yield : 1; }
function * genFunc() { yield : 1; }
function *genFunc() { yield : 1; }
function*genFunc() { yield : 1; }
ì ëë ìŽí° íšìë íìŽí íšìë¡ ì ìí ì ìë€.
ì ëë ìŽí° íšìë new ì°ì°ìì íšê» ìì±ì íšìë¡ ížì¶í ì ìë€.
ì ëë ìŽí° íšì륌 ížì¶íë©Ž ìŒë° íšìì²ëŒ íšì ìœë ëžë¡ì ì€ííë ê²ìŽ ìëëŒ ê°ì²Žë¥Œ ìì±íŽ ë°ííë€. ì ëë ìŽí° íšìê° ë°íí ì ëë ìŽí° ê°ì²Žë ìŽí°ë¬ëžìŽë©Žì ëìì ìŽí°ë ìŽí°ë€.
// ì ëë ìŽí° íšì
function* genFunc() {
yield 1;
yield 2;
yield 3;
}
// ì ëë ìŽí° íšì륌 ížì¶íë©Ž ì ëë ìŽí° ê°ì²Žë¥Œ ë°ííë€.
const genrator = genFunc();
// ì ëë ìŽí° ê°ì²Žë ìŽí°ë¬ëžìŽë©Žì ëìì ìŽí°ë ìŽí°ë€.
// ìŽí°ë¬ëžì Symbol.iterator ë©ìë륌 ì§ì 구ííê±°ë íë¡í íì
첎ìžì íµíŽ ììë°ì ê°ì²Žë€.
console.log(Symbol.iterator in generator); // true
// ìŽí°ë ìŽí°ë next ë©ìë륌 ê°ëë€.
console.log('next' in generator); // true
ì ëë ìŽí° ê°ì²Žë next ë©ìë륌 ê°ë ìŽí°ë ìŽí°ì§ë§ ìŽí°ë ìŽí°ìë ìë return. throw ë©ìë륌 ê°ëë€. ì ëë ìŽí° ê°ì²Žì ìž ê°ì ë©ìë륌 ížì¶íë©Ž ë€ì곌 ê°ìŽ ëìíë€.
function* genFunc(){
try{
yield 1;
yield 2;
yield 3;
} catch (e) {
console.error(e);
}
}
const generator = genFunc();
conssole.log(geneerator.next()); // {value: 1, done: false}
console.log(generator.return('End!')); // {value: "End!", done : true}
throw ë©ìë륌 ížì¶íë©Ž ìžìë¡ ì ë¬ë°ì ìë¬ë¥Œ ë°ììí€ê³ undefined륌 value íë¡íŒí° ê°ìŒë¡, true륌 done íë¡íŒí° ê°ìŒë¡ ê°ë ìŽí°ë ìŽí° 늬ì íž ê°ì²Žë¥Œ ë°ííë€.
ì ëë ìŽí°ë yield í€ìëì next ë©ìë륌 íµíŽ ì€íì ìŒì ì€ì§íë€ê° íìí ìì ì ë€ì ì¬ê°í ì ìë€. ìŒë° íšìë ížì¶ ìŽí ì ìŽê¶ì íšìê° ë ì íì§ë§ ì ëë ìŽí°ë íšì ížì¶ììê² ì ìŽê¶ì ìëíì¬ íìí ìì ì íšì ì€íì ì¬ê°í ì ìë€.
ì ëë ìŽí° íšì륌 ížì¶íë©Ž ì ëë ìŽí° íšìì ìœë ëžë¡ìŽ ì€íëë ê²ìŽ ìëëŒ ì ëë ìŽí° ê°ì²Žë¥Œ ë°ííë€ê³ íë€. ìŽí°ë¬ëžìŽë©Žì ëìì ìŽí°ë ìŽí°ìž ì ëë ìŽí° ê°ì²Žë next ë©ìë륌 ê°ëë€. ì ëë ìŽí° ê°ì²Žì next ë©ìë륌 ížì¶íë©Ž ì ëë ìŽí° íšìì ìœë ëžë¡ì ì€ííë€.
ëš, ìŒë° íšìì²ëŒ í ë²ì ìœë ëžë¡ì 몚ë ìœë륌 ìŒêŽ ì€ííë ê²ìŽ ìëëŒ yield ííìê¹ì§ë§ ì€ííë€. yield í€ìëë ì ëë ìŽí° íšìì ì€íì ìŒì ì€ì§ìí€ê±°ë yield í€ìë ë€ì ì€ë ííìì íê° ê²°ê³Œë¥Œ ì ëë ìŽí° íšì ížì¶ììê² ë°ííë€.
// ì ëë ìŽí° íšì
// ì ëë ìŽí° íšì
function* genFunc() {
yield 1;
yield 2;
yield 3;
}
// ì ëë ìŽí° íšì륌 ížì¶íë©Ž ì ëë ìŽí° ê°ì²Žë¥Œ ë°ííë€.
// ìŽí°ë¬ëžìŽë©Žì ëìì ìŽí°ë ìŽí°ìž ì ëë ìŽí° ê°ì²Žë next ë©ìë륌 ê°ëë€.
const generator = genFunc();
// ì²ì next ë©ìë륌 ížì¶íë©Ž 첫 ë²ì§ž yield ííìê¹ì§ ì€íëê³ ìŒì ì€ì§ëë€.
// next ë©ìëë ìŽí°ë ìŽí° 늬ì íž ê°ì²Ž({value, done})륌 ë°ííë€.
// value íë¡íŒí°ìë 첫 ë²ì§ž yield ííììì yieldë ê° 1ìŽ í ë¹ëë€.
// done íë¡íŒí°ìë ì ëë ìŽí° íšìê° ëê¹ì§ ì€íëìëì§ë¥Œ ëíëŽë falseê° í ë¹ëë€.
console.log(generator.next()); // {value: 1, done: false}
// ë€ì next ë©ìë륌 ížì¶íë©Ž ë ë²ì§ž yield ííìê¹ì§ ì€íëê³ ìŒì ì€ì§ëë€.
// next ë©ìëë ìŽí°ë ìŽí° 늬ì íž ê°ì²Ž({value, done})륌 ë°ííë€.
// value íë¡íŒí°ìë ë ë²ì§ž yield ííììì yieldë ê° 2ê° í ë¹ëë€.
// done íë¡íŒí°ìë ì ëë ìŽí° íšìê° ëê¹ì§ ì€íëìëì§ë¥Œ ëíëŽë falseê° í ë¹ëë€.
console.log(generator.next()); // {value: 2, done: false}
// ë€ì next ë©ìë륌 ížì¶íë©Ž ìž ë²ì§ž yield ííìê¹ì§ ì€íëê³ ìŒì ì€ì§ëë€.
// next ë©ìëë ìŽí°ë ìŽí° 늬ì íž ê°ì²Ž({value, done})륌 ë°ííë€.
// value íë¡íŒí°ìë ìž ë²ì§ž yield ííììì yieldë ê° 3ìŽ í ë¹ëë€.
// done íë¡íŒí°ìë ì ëë ìŽí° íšìê° ëê¹ì§ ì€íëìëì§ë¥Œ ëíëŽë falseê° í ë¹ëë€.
console.log(generator.next()); // {value: 3, done: false}
// ë€ì next ë©ìë륌 ížì¶íë©Ž ëšì yield ííììŽ ììŒë¯ë¡ ì ëë ìŽí° íšìì ë§ì§ë§ê¹ì§ ì€ííë€.
// next ë©ìëë ìŽí°ë ìŽí° 늬ì íž ê°ì²Ž({value, done})륌 ë°ííë€.
// value íë¡íŒí°ìë ì ëë ìŽí° íšìì ë°íê° undefinedê° í ë¹ëë€.
// done íë¡íŒí°ìë ì ëë ìŽí° íšìê° ëê¹ì§ ì€íëììì ëíëŽë trueê° í ë¹ëë€.
console.log(generator.next()); // {value: undefined, done: true}
ì ëë ìŽí° ê°ì²Žì next ë©ìë륌 ížì¶íë©Ž yield ííìê¹ì§ ì€íëê³ ìŒì ì€ì§ëë€. ìŽë íšìì ì ìŽê¶ìŽ ížì¶ìë¡ ìëëë€. ìŽí íìí ìì ì ížì¶ìê° ëë€ì next ë©ìë륌 ížì¶íë©Ž ìì ì€ì§ë ìœëë¶í° ì€íì ì¬ê°íêž° ììíì¬ ë€ì yield ííìê¹ì§ ì€íëê³ ë ë€ì ìŒì ì€ì§ëë€.
ìŽë ì ëë ìŽí° ê°ì²Žì next ë©ìëë value, done íë¡íŒí°ë¥Œ ê°ë ìŽí°ë ìŽí° 늬ì íž ê°ì²Žë¥Œ ë°ííë€. next ë©ìëê° ë°íí ìŽí°ë ìŽí° 늬ì íž ê°ì²Žì value íë¡íŒí°ìë yield ííììì yieldë ê°ìŽ í ë€ì€ëê³ done íë¡íŒí°ìë ì ëë ìŽí° íšìê° ëê¹ì§ ì€íëìëì§ë¥Œ ëíëŽë ë¶ëŠ¬ìž ê°ìŽ í ë¹ëë€.
generator.next() â yield â generator.next() â yield â ... â generator.next() â return
ì ëë ìŽí° ê°ì²Žì next ë©ìëì ì ë¬í ìžìë ì ëë ìŽí° íšìì yield ííìì í ë¹ë°ë ë³ìì í ë¹ëë€.
function* genFunc() {
// ì²ì next ë©ìë륌 ížì¶íë©Ž 첫 ë²ì§ž yield ííìê¹ì§ ì€íëê³ ìŒì ì€ì§ëë€.
// ìŽë yieldë ê° 1ì next ë©ìëê° ë°íí ìŽí°ë ìŽí° 늬ì íž ê°ì²Žì value íë¡íŒí°ì í ë¹ëë€.
// x ë³ììë ìì§ ì묎ê²ë í ë¹ëì§ ììë€. x ë³ìì ê°ì next ë©ìëê° ë ë²ì§ž ížì¶ë ë ê²°ì ëë€.
const x = yield 1;
// ë ë²ì§ž next ë©ìë륌 ížì¶í ë ì ë¬í ìžì 10ì 첫 ë²ì§ž yield ííìì í ë¹ë°ë x ë³ìì í ë¹ëë€.
// ìŠ, const x = yield 1;ì ë ë²ì§ž next ë©ìë륌 ížì¶íì ë ìë£ëë€.
// ë ë²ì§ž next ë©ìë륌 ížì¶íë©Ž ë ë²ì§ž yield ííìê¹ì§ ì€íëê³ ìŒì ì€ì§ëë€.
// ìŽë yieldë ê° x + 10ì next ë©ìëê° ë°íí ìŽí°ë ìŽí° 늬ì íž ê°ì²Žì value íë¡íŒí°ì í ë¹ëë€.
const y = yield (x + 10);
// ìž ë²ì§ž next ë©ìë륌 ížì¶í ë ì ë¬í ìžì 20ì ë ë²ì§ž yield ííìì í ë¹ë°ë y ë³ìì í ë¹ëë€.
// ìŠ, const y = yield (x + 10);ë ìž ë²ì§ž next ë©ìë륌 ížì¶íì ë ìë£ëë€.
// ìž ë²ì§ž next ë©ìë륌 ížì¶íë©Ž íšì ëê¹ì§ ì€íëë€.
// ìŽë ì ëë ìŽí° íšìì ë°íê° x + yë next ë©ìëê° ë°íí ìŽí°ë ìŽí° 늬ì íž ê°ì²Žì value íë¡íŒí°ì í ë¹ëë€.
// ìŒë°ì ìŒë¡ ì ëë ìŽí°ì ë°íê°ì ìë¯žê° ìë€.
// ë°ëŒì ì ëë ìŽí°ììë ê°ì ë°íí íìê° ìê³ returnì ì¢
ë£ì ì믞ë¡ë§ ì¬ì©íŽìŒ íë€.
return x + y;
}
// ì ëë ìŽí° íšì륌 ížì¶íë©Ž ì ëë ìŽí° ê°ì²Žë¥Œ ë°ííë€.
// ìŽí°ë¬ëžìŽë©° ëìì ìŽí°ë ìŽí°ìž ì ëë ìŽí° ê°ì²Žë next ë©ìë륌 ê°ëë€.
const generator = genFunc(0);
// ì²ì ížì¶íë next ë©ìëìë ìžì륌 ì ë¬íì§ ìëë€.
// ë§ìœ ì²ì ížì¶íë next ë©ìëì ìžì륌 ì ë¬íë©Ž 묎ìëë€.
// next ë©ìëê° ë°íí ìŽí°ë ìŽí° 늬ì íž ê°ì²Žì value íë¡íŒí°ìë 첫 ë²ì§ž yieldë ê° 1ìŽ í ë¹ëë€.
let res = generator.next();
console.log(res); // {value: 1, done: false}
// next ë©ìëì ìžìë¡ ì ë¬í 10ì genFunc íšìì x ë³ìì í ë¹ëë€.
// next ë©ìëê° ë°íí ìŽí°ë ìŽí° 늬ì íž ê°ì²Žì value íë¡íŒí°ìë ë ë²ì§ž yieldë ê° 20ìŽ í ë¹ëë€.
res = generator.next(10);
console.log(res); // {value: 20, done: false}
// next ë©ìëì ìžìë¡ ì ë¬í 20ì genFunc íšìì y ë³ìì í ë¹ëë€.
// next ë©ìëê° ë°íí ìŽí°ë ìŽí° 늬ì íž ê°ì²Žì value íë¡íŒí°ìë ì ëë ìŽí° íšìì ë°íê° 30ìŽ í ë¹ëë€.
res = generator.next(20);
console.log(res); // {value: 30, done: true}
ìŽì²ëŒ ì ëë ìŽí° íšìë next ë©ìëì yield ííìì íµíŽ íšì ížì¶ìì íšìì ìí륌 ì£Œê³ ë°ì ì ìë€. íšì ížì¶ìë next ë©ìë륌 íµíŽ yield ííìê¹ì§ íšì륌 ì€íììŒ ì ëë ìŽí° ê°ì²Žê° êŽëŠ¬íë ìí륌 꺌ëŽì¬ ì ìê³ , next ë©ìëì ìžì륌 ì ë¬íŽì ì ëë ìŽí° ê°ì²Žì ìí륌 ë°ìŽë£ì ì ìë€. ìŽë¬í ì ëë ìŽí°ì í¹ì±ì íì©íë©Ž ë¹ëêž° ì²ëŠ¬ë¥Œ ëêž° ì²ëŠ¬ì²ëŒ 구íí ì ìë€.
ì ëë ìŽí° íšì륌 ì¬ì©íë©Ž ìŽí°ë ìŽì íë¡í ìœì ì€ìíŽ ìŽí°ë¬ëžì ìì±íë ë°©ìë³Žë€ ê°ëší ìŽí°ëŠ¬ëžì 구íí ì ìë€.
// 묎í ìŽí°ë¬ëžì ìì±íë íšì
const infiniteFibonacci = (function () {
let [pre, cur] = [0, 1];
return{
[Symbol.iterator]() { return this; },
next() {
[pre, cur] = [cur, pre + cur];
// 묎í ìŽí°ë¬ëžìŽë¯ë¡ done íë¡íŒí°ë¥Œ ìëµíë€.
return { value : cur };
}
};
}());
// infiniteFibonaccië 묎í ìŽí°ë¬ëžìŽë€.
for (const num of infiniteFibonacci) {
if (num > 10000) break;
console.log(num); // 1 2 3 5 8.. 2584 4181 6765
}
ì ëë ìŽí° íšìë next ë©ìëì yield ííìì íµíŽ íšì ížì¶ìì íšìì ìí륌 ì£Œê³ ë°ì ì ìë€. ìŽë¬í í¹ì±ì íì©íë©Ž íë¡ë¯žì€ë¥Œ ì¬ì©í ë¹ëêž° ì²ëŠ¬ë¥Œ ëêž° ì²ëŠ¬ì²ëŒ 구íí ì ìë€. ë€ì ë§íŽ, íë¡ë¯žì€ì íì ì²ëŠ¬ ë©ìë then/catch/finally ììŽ ë¹ëêž° ì²ëŠ¬ 결곌륌 ë°ííëë¡ êµ¬íí ì ìë€.
// node-fetchë Node.js í겜ìì window.fetch íšì륌 ì¬ì©íêž° ìí íší€ì§ë€.
// ëžëŒì°ì í겜ìì ìŽ ìì 륌 ì€ííë€ë©Ž ìë ìœëë íì ìë€.
// https://github.com/node-fetch/node-fetch
const fetch = require('node-fetch')
// ì ëë ìŽí° ì€íêž°
const async = generatorFunc => {
const generator = generatorFunc(); // 2
const onResolved = arg => {
const result = generator.next(arg); // 5
return result.done
? reslut.value // 9
: reslut.value.then(res => onResolved(res));
};
return onResolved; // 3
};
(async(function* fetchTodo() { // 1
const url = 'https://jsonplaceholder.typicode.com/todos/1';
const response = yield fetch(url); // 6
const todo = yield response.json(); /// 8
console.log(todo)
// {userId : 1, id: 1, title: 'delectus aut autem', completed: false}
})()); // 4
async/awaitë íë¡ë¯žì€ë¥Œ êž°ë°ìŒë¡ ëìíë€. async/await륌 ì¬ì©íë©Ž íë¡ë¯žì€ì then/catch/finally íì ì²ëŠ¬ ë©ìëì ìœë°± íšì륌 ì ë¬íŽì ë¹ëêž° ì²ëŠ¬ 결곌륌 íì ì²ëŠ¬í íì ììŽ ë§ì¹ ëêž° ì²ëŠ¬ì²ëŒ íë¡ë¯žì€ë¥Œ ì¬ì©í ì ìë€. ë€ì ë§íŽ, íë¡ë¯žì€ì íì ì²ëŠ¬ ë©ìë ììŽ ë§ì¹ ëêž° ì²ëŠ¬ì²ëŒ íë¡ë¯žì€ê° ì²ëŠ¬ 결곌륌 ë°ííëë¡ êµ¬íí ì ìë€.
const fetch = require('node-fetch');
async function fetchTodo() {
const url = 'https://jsonplaceholder.typicode.com/todos/1';
const response = await fetch(url);
const todo = await response.json();
console.log(todo);
// {userId: 1, title: 'delectus aut autem', completed: false}
}
fetchTodo();
await í€ìëë ë°ëì async íšì ëŽë¶ìì ì¬ì©íŽìŒ íë€. async íšìë async í€ìë륌 ì¬ì©íŽ ì ìíë©° ìžì ë íë¡ë¯žì€ë¥Œ ë°ííë€. async íšìê° ëª ìì ìŒë¡ íë¡ë¯žì€ë¥Œ ë°ííì§ ìëëŒë async íšìë ì묵ì ìŒë¡ ë°íê°ì resolveíë íë¡ë¯žì€ë¥Œ ë°ííë€.
// async íšì ì ìžë¬ž
async function foo(n) { return n; }
foo(1).then(v => console.log(v)); // 1
// async íšì ííì
const bar = async function (n) { return n; };
bar(2).then(v => console.log(v)); // 2
// async íìŽí íšì
const baz = async n => n;
baz(3).then(v => console.log(v)); // 3
// async ë©ìë
const obj = {
async foo(n) { return n; }
};
obj.foo(4).then(v => console.log(v)); // 4
// async íŽëì€ ë©ìë
class MyClass {
async bar(n) { return n; }
}
const myClass = new MyClass();
myClass.bar(5).then(v => console.log(v)); // 5
íŽëì€ì constructor ë©ìëë async ë©ìëê° ë ì ìë€. íŽëì€ì constructor ë©ìëë ìžì€íŽì€ë¥Œ ë°ííŽìŒ íì§ë§ async íšìë ìžì ë íë¡ë¯žì€ë¥Œ ë°ííŽìŒ íë€.
await í€ìëë íë¡ë¯žì€ê° settled ìí(ë¹ëêž° ì²ëŠ¬ê° ìíë ìí)ê° ë ëê¹ì§ ëêž°íë€ê° settled ìíê° ëë©Ž íë¡ë¯žì€ê° resolveí ì²ëŠ¬ 결곌륌 ë°ííë€. await í€ìëë ë°ëì íë¡ë¯žì€ ììì ì¬ì©íŽìŒ íš.
const fetch = require('node-fetch');
const getGithubUserName = async id => {
const res = await fetch(`https://api.github.com/users/${id}`); // â
const { name } = await res.json(); // â¡
console.log(name); // Ungmo Lee
};
getGithubUserName('ungmo2');
â ì fetch íšìê° ìíí HTTP ìì²ì ëí ìë²ì ìëµìŽ ëì°©íŽì fetch íšìê° ë°íí íë¡ë¯žì€ê° settled ìíê° ë ëê¹ì§ â ì ëêž°íê² ëë€. ìŽí íë¡ë¯žì€ê° settled ìíê° ëë©Ž íë¡ë¯žì€ê° resolveí ì²ëŠ¬ ê²°ê³Œê° resë³ìì í ë¹ëë€.
async/awaitìì ìë¬ ì²ëŠ¬ë try... catch 묞ì ì¬ì©í ì ìë€. ìœë°± íšì륌 ìžìë¡ ì ë¬ë°ë ë¹ëêž° íšììë ë¬ëŠ¬ íë¡ë¯žì€ë¥Œ ë°ííë ë¹ëêž° íšìë ëª ìì ìŒë¡ ížì¶í ì ìêž° ë묞ì ížì¶ìê° ëª ííë€.
const fetch = require('node-fetch');
const foo = async () => {
try {
const wrongUrl = 'https://wrong.url';
const response = await fetch(wrongUrl);
const data = await response.json();
console.log(data);
} catch (err) {
console.error(err); // TypeError: Failed to fetch
}
};
foo();
async íšì ëŽìì catch 묞ì ì¬ì©íŽì ìë¬ ì²ëŠ¬ë¥Œ íì§ ììŒë©Ž async íšìë ë°ìí ìë¬ë¥Œ rejectíë íë¡ë¯žì€ë¥Œ ë°ííë€.