μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- μλ°μ€ν¬λ¦½νΈ
- λ°λΈμ½μ€
- position
- history api
- useRef
- useEffect
- λΈλ‘κ·Έ
- CSS
- λ°λΈμ½μ€3κΈ°
- fetch API
- νλ‘ νΈμλ
- νλ‘κ·Έλλ¨Έμ€
- μκ³ λ¦¬μ¦
- float
- Gatsby
- Props
- REACT
- μ½λ©ν μ€νΈ
- Flex
- Today
- Total
Daehyunii's Dev-blog
46μ₯ μ λλ μ΄ν°μ async/await(β»λ¨μ κ°λ λ§ μ 리) λ³Έλ¬Έ
46μ₯ μ λλ μ΄ν°μ async/await(β»λ¨μ κ°λ λ§ μ 리)
Daehyunii 2022. 7. 30. 13:4746.1 μ λλ μ΄ν°λ?
ES6μμ λμ λ μ λλ μ΄ν°λ μ½λ λΈλ‘μ μ€νμ μΌμ μ€μ§νλ€κ° νμν μμ μ μ¬κ°ν μ μλ νΉμν ν¨μλ€.
μΌλ° ν¨μμμ μ°¨μ΄μ
1. μ λλ μ΄ν° ν¨μλ ν¨μ νΈμΆμμκ² ν¨μ μ€νμ μ μ΄κΆμ μλν μ μλ€.
2. μ λλ μ΄ν° ν¨μλ ν¨μ νΈμΆμμ ν¨μμ μνλ₯Ό μ£Όκ³ λ°μ μ μλ€.
3. μ λλ μ΄ν° ν¨μλ₯Ό νΈμΆνλ©΄ μ λλ μ΄ν° κ°μ²΄λ₯Ό λ°ννλ€.
46.2 μ λλ μ΄ν° ν¨μμ μ μ
μ λλ μ΄ν° ν¨μλ function* ν€μλλ‘ μ μΈνλ€. κ·Έλ¦¬κ³ νλ μ΄μμ yield ννμμ ν¬ν¨νλ€. μ΄κ²μ μ μΈνλ©΄ μΌλ° ν¨μ μ μνλ λ°©λ²κ³Ό λμΌνλ€. μμ€ν°λ¦¬μ€ν¬(*)μ μμΉλ function ν€μλμ ν¨μ μ΄λ¦ μ¬μ΄λΌλ©΄ μ΄λλ μ§ μκ΄μλ€.
// μ λλ μ΄ν° ν¨μ μ μΈλ¬Έ
function* genDecFunc(){
yield 1;
}
// μ λλ μ΄ν° ν¨μ ννμ
const genExpFunc = function*(){
yield 1;
};
// μ λλ μ΄ν° λ©μλ
const obj = {
*genObjMethod(){
yield 1;
}
};
β»μ£Όμν΄μΌ ν μ
1. μ λλ μ΄ν° ν¨μλ νμ΄ν ν¨μλ‘ μ μν μ μλ€.
2. μ λλ μ΄ν° ν¨μλ new μ°μ°μμ ν¨κ» μμ±μ ν¨μλ‘ νΈμΆν μ μλ€.
46.3 μ λλ μ΄ν° κ°μ²΄
μ λλ μ΄ν° ν¨μλ₯Ό νΈμΆνλ©΄ μΌλ° ν¨μμ²λΌ ν¨μ μ½λ λΈλ‘μ μ€ννλ κ²μ΄ μλλΌ μ λλ μ΄ν° κ°μ²΄λ₯Ό μμ±ν΄ λ°ννλ€. μ λλ μ΄ν° ν¨μκ° λ°νν μ λλ μ΄ν° κ°μ²΄λ μ΄ν°λ¬λΈμ΄λ©΄μ λμμ μ΄ν°λ μ΄ν°λ€. μ¦, μ λλ μ΄ν° κ°μ²΄λ next λ©μλλ₯Ό κ°λ μ΄ν°λ μ΄ν°μ΄μ§λ§ μ΄ν°λ μ΄ν°μλ μλ return, throw λ©μλλ₯Ό κ°λλ€.
46.4 μ λλ μ΄ν°μ μΌμ μ€μ§μ μ¬κ°
μ λλ μ΄ν°λ yield ν€μλμ next λ©μλλ₯Ό ν΅ν΄ μ€νμ μΌμ μ€μ§νλ€κ° νμν μμ μ λ€μ μ¬κ°ν μ μλ€. μ¦ ν¨μ νΈμΆ μ΄ν μ μ΄κΆμ ν¨μ νΈμΆμμκ² μλνμ¬ νμν μμ μ ν¨μ μ€νμ μ¬κ°ν μ μλ€. yield ν€μλλ μ λλ μ΄ν° ν¨μμ μ€νμ μΌμ μ€μ§μν€κ±°λ yield ν€μλ λ€μ μ€λ ννμμ νκ° κ²°κ³Όλ₯Ό μ λλ μ΄ν° ν¨μ νΈμΆμμκ² λ°ννλ€.
μ λλ μ΄ν° κ°μ²΄μ next λ©μλλ₯Ό νΈμΆνλ©΄ yield ννμκΉμ§ μ€νλκ³ μΌμ μ€μ§λλ€. μ΄λ ν¨μμ μ μ΄κΆμ΄ νΈμΆμλ‘ μλλλ€. μ΄ν νμν μμ μ νΈμΆμκ° λλ€μ next λ©μλλ₯Ό νΈμΆνλ©΄ μΌμ μ€μ§λ μ½λλΆν° μ€νμ μ¬κ°νκΈ° μμνμ¬ λ€μ yield ννμκΉμ§ μ€νλκ³ λ λ€μ μ€μ§λλ€.
function* genFunc(){
yield 1;
yield 2;
yield 3;
}
const generator = genFunc();
console.log(generator.next()); // {value: 1, done: false}
console.log(generator.next()); // {value: 2, done: false}
console.log(generator.next()); // {value: 3, done: false}
console.log(generator.next()); // {value: undefined, done: true}
μ΄μ²λΌ μ λλ μ΄ν° ν¨μλ next λ©μλμ yield ννμμ ν΅ν΄ ν¨μ νΈμΆμμ ν¨μμ μνλ₯Ό μ£Όκ³ λ°μ μ μλ€. μ΄λ¬ν μ λλ μ΄ν°μ νΉμ±μ νμ©νλ©΄ λΉλκΈ° μ²λ¦¬λ₯Ό λκΈ° μ²λ¦¬μ²λΌ ꡬνν μ μλ€.
46.6 async/await
μ λλ μ΄ν°λ₯Ό μ¬μ©νλ©΄ λΉλκΈ° μ²λ¦¬λ₯Ό λκΈ° μ²λ¦¬μ²λΌ λμνλλ‘ κ΅¬νν μ μμ§λ§ μ½λκ° λ¬΄μ²μ΄λ μ₯ν©ν΄μ§κ³ κ°λ μ±λ λλΉ μ§λ€. ES8μμλ μ λλ μ΄ν°λ³΄λ€ κ°λ¨νκ³ κ°λ μ± μ’κ² λΉλκΈ° μ²λ¦¬λ₯Ό λκΈ° μ²λ¦¬μ²λΌ λμνλλ‘ κ΅¬νν μ μλ async/awaitκ° λμ λμλ€.
46.6.1 asyncν¨μ
await ν€μλλ λ°λμ async ν¨μ λ΄λΆμμ μ¬μ©ν΄μΌ νλ€. async ν¨μλ async ν€μλλ₯Ό μ¬μ©ν΄ μ μνλ©° μΈμ λ νλ‘λ―Έμ€λ₯Ό λ°ννλ€. async ν¨μκ° λͺ μμ μΌλ‘ νλ‘λ―Έμ€λ₯Ό λ°ννμ§ μλλΌλ async ν¨μλ μ묡μ μΌλ‘ λ°νκ°μ resolveνλ νλ‘λ―Έμ€λ₯Ό λ°ννλ€.
// async ν¨μ μ μΈλ¬Έ
async function foo(n){return n; }
foo(1).then(v => console.log(v));
// async ν¨μ ννμ
const bar = async function(n){return n;};
bar(2).then(v => console.log(v));
// async νμ΄ν ν¨μ
const baz = async n => n;
baz(3).then(v => console.log(v));
46.6.2 await ν€μλ
await ν€μλλ₯Ό νλ‘λ―Έμ€κ° settled μν(λΉλκΈ° μ²λ¦¬κ° μνλ μν)κ° λ λκΉμ§ λκΈ°νλ€κ° settled μνκ° λλ©΄ νλ‘λ―Έμ€κ° resolveν μ²λ¦¬ κ²°κ³Όλ₯Ό λ°ννλ€. await ν€μλλ λ°λμ νλ‘λ―Έμ€ μμμ μ¬μ©ν΄μΌ νλ€.
'π Language & CS knowledge > JavaScript (λͺ¨λμλ°μ€ν¬λ¦½νΈ Deep Dive)' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
48μ₯ λͺ¨λ (0) | 2022.07.31 |
---|---|
47μ₯ μλ¬ μ²λ¦¬ (0) | 2022.07.30 |
45μ₯ νλ‘λ―Έμ€(β»λ¨μ κ°λ λ§ μ 리) (0) | 2022.07.30 |
44μ₯ REST API(β»λ¨μ κ°λ λ§ μ 리) (0) | 2022.07.29 |
42μ₯ λΉλκΈ° νλ‘κ·Έλλ° (0) | 2022.07.29 |