230209(λͺ©)
π μ±μ₯μΌμ§ 3.1
μ±
ν볡ν μ΄κΈ°μ£Όμμ(μ¨μΈ λ€μ΄μ΄)
μ λ΄μ©μ μκ·Ήλ°μ μμνλ μλ°ν μ±μ₯κΈ°λ‘
μ΄μμλ κ½κ³Ό μ£½μ κ½μ μ΄λ»κ² ꡬλ³νλκ°?
μ±μ₯νκ³ μλ κ²μ΄ μ΄μ μλ κ²μ΄λ€.
μλͺ μ μ μΌν μ¦κ±°λ μ±μ₯μ΄λ€!
π³ ν€μλ (1.0)
μ΅λν κ°λ¨νκ² μ 리, μΆνμ 보면μ μ€μ€λ‘ μ€λͺ
π κ²½ν μμ£Όλ‘ (2.0)
λ¨μ μ 보λ₯Ό μ λ¬νκΈ°λ³΄λ€ λ¬΄μμ λ°°μ κ³ μ΄λ»κ² ν΄κ²°νλμ§ μ§§κ³ κ°λ¨νκ² μμ±
βοΈ μ ν΄μ§ ν νλ¦Ώμ λ§μΆ°μ (3.0)
ν€μλ, κ²½ν λͺ¨λ μ’λ€. λ€λ§ λ§€μΌ μμ±νκΈ°λ‘ λ§μ λ¨Ήμλ§νΌ ν΅μ¬λ§ κ°κ²°νκ² μ 리ν μ μκ² ν νλ¦Ώμ μμ± (3.1) 230102λΆν° μμλλ νμ΅μ κ΄ν λ΄μ© μΆκ°
π μ€λμ ν€μλ
μ€μΌμ€λ§
- μ΄μ체μ (OS)κ° νλ‘μΈμ€λ€μκ² κ³΅μ νκ³ ν©λ¦¬μ μΌλ‘ CPU μμμ λ°°λΆνλ κ²
μ€λ λ
- νλμ¨μ΄μ μ€λ λ: μ½μ΄ νλκ° λμμ μ²λ¦¬νλ λͺ λ Ήμ λ¨μ
- μννΈμ¨μ΄μ μ€λ λ: νλ‘κ·Έλ¨ νλμμ λ 립μ μΌλ‘ μ€νλλ λ¨μ
μ΄λ²€νΈ μ²λ¦¬
- μ΄λ²€νΈ λ¨μμ λ³λ ¬ μ²λ¦¬
- λ¨μΌ μ€λ λμμ λΉλκΈ°μ μΌλ‘ μμ μ μννκΈ° μν΄ μ΄λ²€νΈλ₯Ό λ°μμμΌ μ²λ¦¬νλ€.
- μλ°μ€ν¬λ¦½νΈμ κ²½μ°, μ΄λ²€νΈ 루νλ₯Ό ν΅ν΄ λ¨μΌ μ€λ λμμλ λ³λ ¬μ μΈ μ²λ¦¬κ° κ°λ₯νλ€.
λΉλκΈ°
- λκΈ°κ° μλ κ²(asynchronous)
non-blocking
μΌλ‘ ν μ€ν¬λ₯Ό μννλ€.- λ³λ ¬μ μΌλ‘ ν μ€ν¬λ₯Ό μννλ€.
- μμ²κ³Ό κ²°κ³Όκ° λμμ μΌμ΄λμ§ μλλ€.(μμ²ν κ·Έ μ리μμ κ²°κ³Όκ° μ£Όμ΄μ§μ§ μλλ€.)
- κ²°κ³Όκ° μ£Όμ΄μ§λ λ° μκ°μ΄ 걸리λλΌλ κ·Έλμ λ€λ₯Έ μμ μ΄ κ°λ₯νλ€.
- λκΈ°λ³΄λ€ μ§κ΄μ μΌλ‘ μ΄ν΄νκΈ° μ΄λ ΅λ€.(μ€κ³κ° νλ€λ€.)
μ½λ°±ν¨μ
- μνλ μμ (νΉμ ν μμ )μ νΈμΆν μ μλ ν¨μ
- μ΄λ€ ν¨μμ 맀κ°λ³μλ‘ μ λ¬λλ ν¨μ
- κ°λ°μκ° μ½λ°±ν¨μλ‘ μ΄λ€ ν¨μλ₯Ό μ λ¬νλ μκ°, κ·Έ ν¨μμ μ€νκΆμ κ·Έ μ½λ°±ν¨μλ₯Ό λ°μ ν¨μμκ² λμ΄κ°λ€.
- μ¦, λΉλκΈ°μ μΌλ‘ μλμ μν λ λΉλκΈ° apiμ ν¨μ μ체λ₯Ό λ겨주μ΄μΌ νλ€!
ν΄λ‘μ
- μ΄λ€ μΈλΆν¨μ Aμ μν aλ₯Ό λ΄λΆν¨μ Bκ° μ°Έμ‘°νκ³ μκ³ , Aμ λ°νκ°μΌλ‘ B ν¨μ μμ²΄κ° λ°νλ λ μμ§ aμ λν μ°Έμ‘° κ°λ₯μ±μΌλ‘ aκ° κ°λΉμ§μ½λ ν λμ§ μκ³ μ΄μμλ νμ
- λΉλκΈ°μ μΌλ‘ μλν λ μ λ¬νλ μ½λ°±ν¨μ λν ν΄λ‘μ λ₯Ό μ΄μ©ν΄ μ΄λ€ λ³μλ₯Ό μ°Έμ‘°ν μ μλ€.
λΉλκΈ°(ν΄λ‘μ x)
function asyncFunc(cb) {
setTimeout(cb, 1000);
}
asyncFunc(function() {
console.log("1 second passed");
});
λΉλκΈ°(ν΄λ‘μ o)
function asyncFunc(cb) {
setTimeout(cb, 1000);
}
function closureExample() {
let message = "1 second passed";
return function() {
console.log(message);
};
}
let closureFunc = closureExample();
asyncFunc(closureFunc);
μ°Έκ³ μλ£
- μ±
νΌμ 곡λΆνλ μ»΄ν¨ν° ꡬ쑰 + μ΄μ체μ
- λΉλκΈ°μ λ©ν° μ°λ λ
- Nodejs: λΉλκΈ° νλ‘κ·Έλλ° μ΄ν΄
π μμ½ λ° ν루 κ°λ¨ νκ³
μ€λμ μͺΌκΈ 곡λΆνλλ° λ©νμ΄ λκ°λ κ±° κ°λ€. μ΄μ체μ ννΈ μμ²΄κ° κ°λ
λ μ΄λ ΅κ³ ꡬνλ μ½μ§ μμμ κ·Έλ° κ² κ°λ€.
μΌλ¨ λ―Έμ
μ λ―Έλ€λκ³ κ°λ
λΆν° μ΄μ¬ν μ΅λνλλ°, λ§μ ꡬνμ νλ €λ μκ°λ³΄λ€ μ½μ§ μμμ κ·Έκ² μ’ λ©νμ΄ νλ€κ² νλ€.
κ°μ²΄μ§ν₯μ΄ λ무λ무 μ’κ³ μ¬λ―Έμλλ°, κ° κ°μ²΄μκ² μ¬λ°λ₯Έ μ±
μκ³Ό μν μ μ£Όλ 건 μ λ§ μ΄λ ΅λ€. νλ¬Όλ©° κ°λ
μ μΌλ‘ μ΄ν΄ν μ΄μ체μ μ μΌλΆλ₯Ό
ꡬννλ €λ μ½μ§ μλ€. κ·Έλλ λ©ν μ‘κ³ λ΄κ° ν μ μλλ§νΌ μ
μ°©κ°μ΄ μ
λ
νκ² ν κ²μ΄λ€! λ¬Όλ‘ λ€νν μ¬λ―ΈμμΌλκΉβ¦! μ¬λ―Έμκ² μ
μ°©κ°μ΄ νμ!
μ€λμ μν μ
- μ΄μ μ€λ μ λ§ λΉ λ₯΄κ² μ»΄ν¨ν° ꡬ쑰 + μ΄μ체μ κ°λ 곡λΆ(μ λΆ λ¨μ§ μμ§λ§ λ€μμ ν¨μ¬ νΈνκ² μ΄ν΄ν μ μμ κ² κ°λ€.)
- λ©νμ΄ νλ€μμ§λ§, λκΉμ§ λ ΈνΈλΆ μμμ κ³ μ ν μ
μ€λμ μμ¬μ΄ μ
- κ°λ μ μμλ μ΄κ±Έ μ½λλ‘ κ΅¬ννλ 건 μκ°λ³΄λ€ μ½μ§ μμλ€λ μ β¦
- μ΄μ°μ μ° κ΅¬ννλλΌλ μ½λκ° λ무⦠λ μ μ 리ν΄λ³΄μ