μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
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 |
Tags
- async-await
- .split()
- μ΄λ €μ΄λ°γ γ
- μλ°μ€ν¬λ¦½νΈ
- μμ€λ¦~
- for문
- μλ°μ€ν¬λ¦½νΈμ ECMAScript
- μλ°μ€ν¬λ¦½νΈμ νΉμ§
- JavaScript
- ES6 λΈλΌμ°μ μ§μ νν©
- μλ°μ€ν¬λ¦½νΈμ νμλ°°κ²½
- arr.push()
- Math.min
- ꡬ문과 μλ―Έ
- νλ‘κ·Έλλ°μ΄λ
- forλ°λ³΅λ¬Έ
- μΌνμ°μ°μ
- Promise.all()
- νλ‘κ·Έλλ¨Έμ€
- .map()
- array.reduce()
- Ajaxλ?
- νλ ¬...
- κ°μ°μ€μ 곡μ
- μκ³ λ¦¬μ¦
- λ°°μ΄ μ΅μκ°
- νλ‘κ·Έλλ¨Έμ€ κ³΅μ μ°μ±
- μλ¦λλ μκ³ λ¦¬μ¦
- !x.includes()
- a && b
Archives
- Today
- Total
Ming's develop story
λκΈ°(Synchronous), λΉλκΈ°(Asynchronous) λ³Έλ¬Έ
λκΈ°(Synchronous)μ λΉλκΈ°(Asynchronous)μ μ°¨μ΄
1. λκΈ°(Synchronous)
- κ°λ : μμ²μ λ³΄λΈ ν μλ΅μ λ°μ λκΉμ§ κΈ°λ€λ¦¬λ λ°©μ
- νΉμ§: ν μμ μ΄ λλμΌ λ€μ μμ μ μνν μ μμ
- μ₯μ :
- μ½λμ μ€ν μμκ° μ§κ΄μ μ΄λ©° μ΄ν΄νκΈ° μ¬μ
- λλ²κΉ μ΄ λΉκ΅μ μ¬μ
- λ¨μ :
- νλμ μμ μ΄ μ€λ 걸리면 μ 체 νλ‘κ·Έλ¨μ΄ λ©μΆ μ μμ
- λ³λ ¬ μ²λ¦¬κ° μ΄λ €μ
β λκΈ° μ½λ μμ (JavaScript)
function taskA() {
console.log("μμ
A μμ");
for (let i = 0; i < 1e9; i++) {} // CPUλ₯Ό λ§μ΄ μ¬μ©νλ μ°μ°
console.log("μμ
A μλ£");
}
function taskB() {
console.log("μμ
B μ€ν");
}
taskA();
taskB(); // taskAκ° λλ ν μ€νλ¨
μ€ν κ²°κ³Ό
μμ
A μμ
(λͺ μ΄ ν)
μμ
A μλ£
μμ
B μ€ν
μμ Aκ° λλ λκΉμ§ μμ Bλ μ€νλμ§ μμ.
2. λΉλκΈ°(Asynchronous)
- κ°λ : μμ²μ λ³΄λΈ ν μλ΅μ κΈ°λ€λ¦¬μ§ μκ³ λ€μ μμ μ μ§ννλ λ°©μ
- νΉμ§: μκ°μ΄ 걸리λ μμ (μ: λ€νΈμν¬ μμ², νμΌ μ½κΈ° λ±)μ΄ μ€νλλ λμ λ€λ₯Έ μμ μ΄ λμμ μ€νλ μ μμ
- μ₯μ :
- μ€λ 걸리λ μμ μ΄ μμ΄λ νλ‘κ·Έλ¨μ΄ λ©μΆμ§ μκ³ μ€νλ¨
- CPUμ I/O μμ μ ν¨μ¨μ μΌλ‘ μ¬μ©ν μ μμ
- λ¨μ :
- μ½λκ° λ³΅μ‘ν΄μ§ μ μμ (μ½λ°± μ§μ₯, Promise, async/await νμ)
- λλ²κΉ μ΄ μ΄λ ΅κ³ νλ¦μ νμ νκΈ° μ΄λ €μ
β λΉλκΈ° μ½λ μμ (JavaScript - setTimeout)
function taskA() {
console.log("μμ
A μμ");
setTimeout(() => {
console.log("μμ
A μλ£");
}, 3000); // 3μ΄ ν μ€ν
}
function taskB() {
console.log("μμ
B μ€ν");
}
taskA();
taskB(); // taskAκ° λλκΈ° μ μ μ€νλ¨
μ€ν κ²°κ³Ό
μμ
A μμ
μμ
B μ€ν
(3μ΄ ν)
μμ
A μλ£
μ€λͺ :
- setTimeout()μ΄ λΉλκΈ° ν¨μμ΄λ―λ‘ taskA() μ€ν μ€μλ taskB()κ° λ°λ‘ μ€νλ¨.
- 3μ΄ νμ μμ A μλ£κ° μΆλ ₯λ¨.
λκΈ°μ λΉλκΈ°μ μ°¨μ΄μ
κ΅¬λΆ λκΈ°(Synchronous) λΉλκΈ°(Asynchronous)
μ€ν λ°©μ | μμ²μ 보λ΄λ©΄ μλ΅μ λ°μ λκΉμ§ λκΈ° | μμ²μ 보λ΄κ³ λ€λ₯Έ μμ μ μ§ν |
μ½λ νλ¦ | μμ°¨μ | λ³λ ¬ μ²λ¦¬ κ°λ₯ |
μλ΅ μλ | νλμ μμ μ΄ λλμΌ λ€μ μμ μ§ν | μ¬λ¬ μμ μ λμμ μ§ν κ°λ₯ |
νμ© μμ | forλ¬Έ, κΈ°λ³Έμ μΈ μ°μ° | λ€νΈμν¬ μμ², νμΌ μ½κΈ°, νμ΄λ¨Έ |
React νμ© μμ
λκΈ° μ½λ (useEffect λ΄λΆ μ€ν)
useEffect(() => {
console.log("λ°μ΄ν° λ‘λ© μμ");
const data = fetchDataSync(); // λκΈ°μ μΈ λ°μ΄ν° νΈμΆ
console.log("λ°μ΄ν° λ‘λ© μλ£:", data);
}, []);
μ΄λ κ² λκΈ°μ μΌλ‘ μ²λ¦¬νλ©΄ fetchDataSync()κ° μ€λ 걸릴 κ²½μ° UIκ° λ©μΆ μ μμ.
λΉλκΈ° μ½λ (useEffect + async/await)
useEffect(() => {
async function loadData() {
console.log("λ°μ΄ν° λ‘λ© μμ");
const data = await fetchDataAsync(); // λΉλκΈ° λ°μ΄ν° νΈμΆ
console.log("λ°μ΄ν° λ‘λ© μλ£:", data);
}
loadData();
}, []);
λΉλκΈ°λ‘ μ²λ¦¬νλ©΄ UIκ° λ©μΆμ§ μκ³ λ°μ΄ν° λ‘λ©μ΄ μ§νλ¨.
κ·ΈλΌ μ λΉλκΈ° μ²λ¦¬λ₯Ό ν΄μΌν κΉ?
- λ€νΈμν¬ μμ²κ³Ό κ°μ μκ°μ΄ 걸리λ μμ μ λκΈ°μ μΌλ‘ μ²λ¦¬νλ©΄ κ·Έλμ λ€λ₯Έ μμ μ΄ κ³μ μ§νλμ§ λͺ»νλ λΉλκΈ° μ²λ¦¬λ₯Ό νμ¬ λ€λ₯Έ μμ λ€(ex. UIκ° κ·Έλ €μ§λ κ² λ±)μ΄ κ³μ μ§νλ μ μλλ‘ νμ¬ μ± μ±λ₯κ³Ό μ¬μ©μ κ²½νμ κ°μ νλ€.
κ²°λ‘
- λΉ λ₯΄κ² μ€νλλ μμ (μ°μ°, λ¨μ λ‘μ§)μ λκΈ° μ²λ¦¬
- λ€νΈμν¬ μμ², νμΌ μ½κΈ°, νμ΄λ¨Έ κ°μ μμ μ λΉλκΈ° μ²λ¦¬
- λΉλκΈ° μ²λ¦¬(async/await)λ₯Ό μ κ·Ή νμ©νμ¬ UIκ° λ©μΆμ§ μλλ‘ κ΅¬ν
'D E V E L O P π» > CS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
Promiseλ?(feat. async-await, Promise.all()) (0) | 2025.02.12 |
---|---|
DOM μ κ°λ (0) | 2025.02.10 |
Comments