node.js
node.js
node.js
μ λ±μ₯ μ΄μ
- λΈλΌμ°μ λ΄μμ JavaScriptκ° λ μ μ μΌλ‘ μ΄μ©ν μ μμμΌλ, λΈλΌμ°μ λ΄μμλ§ μ¬μ©ν μ μμΌλ―λ‘ νμ₯μ±μ΄ μ’μ§ μμλ€.
node.js
μ λ±μ₯μΌλ‘ λΈλΌμ°μ λΏλ§ μλλΌ μλ², λ¨Έμ λ¬λ λ°μ€ν¬ν μ± λ± JavaScriptλΌλ νλ‘κ·Έλλ° μΈμ΄κ° ꡬλλ μ μλ νκ²½μ΄ νμ₯λμλ€.
=> JavaScriptλ₯Ό μ΄μ©ν μ μλ λΆμΌλ₯Ό λν
// μ€λͺ
μ μν μμ μ½λ
function delay() {
// μκ°μ΄ μ€λ 걸리λ μμ
console.log("μμ
λ");
}
console.log("μμ");
setTimeout(delay(), 3000); // λλ μ΄ λλ μ§μ
console.log("λ");
μ€ν μμλλ‘ νΈμΆμ€νμ μκΈ°
νΈμΆμ€ν : [μμ, delay(), λ]
λ°±κ·ΈλΌμ΄λ νμμμ
μ λ°±λλΌμ΄λλ‘ μ΄λ
setTimeout()
ν¨μλ λ°±λλΌμ΄λκ° νμνλ€
=> delay()
ν¨μ λ°±κ·ΈλΌμ΄λλ‘ μ΄λ
λ°±κ·ΈλΌμ΄λμμ μμ
μ΄ μλ£λλ©΄ νμ€ν¬ νλ‘ μ΄λ
νμ€ν¬ ν : [μμ
λ]
=> νμ€ν¬ νμμ κ³μ λκΈ°λ₯Ό νκ³ μλ€κ°
νΈμΆμ€νλ€μ΄ λ€ μλ£λλ©΄ μ΄λ²€νΈ 루νκ° νμ€ν¬ νμ μλ μμ
μ νΈμΆ μ€νμΌλ‘ μ΄λμν€λ©΄μ νΈμΆ μ€νμ μλ μμ
μ΄ μ€νλλ€.
νΈμΆμ€ν : [μμ
λ]
=> νΈμΆ μ€ν, λ°±κ·ΈλΌμ΄λ, νμ€ν¬ ν, μ΄λ²€νΈ 루νλΌλ μ΄λ²€νΈ κΈ°λ° μμ€ν μ ν΅ν΄μ μ½λλ€μ λ ν¨κ³Όμ μ΄κ³ ν¨μ¨μ μΌλ‘ μ€νμν€λλ‘ λ§λ€μ΄ μ€λ€.
μκ°μ΄ μ€λ 걸리λ μμ
μ λ°±κ·ΈλΌμ΄λμμ μ²λ¦¬λ₯Ό νκ³ , μμ
μ μμ²νλ λμ ν΄λΌμ΄μΈνΈλ κ³μν΄μ μμ²μ λ³΄λΌ μ μλ€.
=> μλ²μμ μμ²μ΄ μλ£λλ μ¦μ λ°λ‘ μλ΅
=> κΈ°λ€λ¦¬μ§ μκ³ μμ²κ³Ό μλ΅μ ν μ μλ ꡬ쑰
ν΄λΌμ΄μΈνΈκ° μλ²μκ² 3λΆμ λ 걸리λ μμ²μ νλ€κ³ κ°μ
=> μλ²κ° 3λΆ λμ μΌμ μ²λ¦¬νκ³ , κ·Έ 3λΆ λμ ν΄λΌμ΄μΈνΈλ μμ μ μμ
μ μ€μ§ν΄μΌ νλ€.
=> μλ²κ° μΌμ λ§μΉλ©΄, κ·Έ μλ΅ κ°μ ν΄λΌμ΄μΈνΈμκ² μ£Όκ³ μμ²κ³Ό μλ΅μ΄ λλκ² λλ€.
=> μκ°μ΄ κΈΈμ΄μ§λ μμ
μ κ²½μ° ν¨μ¨μ μ΄μ§ λͺ»ν ꡬ쑰λ₯Ό κ°μ§
=> μ΄ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ λ
Ό λΈλ‘νΉ I/Oκ° λ±μ₯νκ² λ¨
μ£Όμ΄μ§ μμ
μ ν κ°μ μ€λ λκ° μ²λ¦¬νλ λ°©μ
=> μ€λ λ : μμ
μ μ€ννλ λ¨μ
λΈλΌμ°μ μμ μ€λ λλ‘ μμ²μ 보λ΄κ³ , μ€λ λλ μμ μ΄ μλ£λλ©΄ λΈλΌμ°μ λ‘ μλ΅μ 보λ΄λ λ°©μ
node.js
μ€μΉvar
, let
, const
μμ보기var
=> ES6 μ΄ν μλ‘μ΄ λ³μ μ μΈ λ°©μ 2κ°μ§κ° μκΉ
let
var
μ κ°μ΄ κ°μ λ³μλͺ
μΌλ‘ μ΄κΈ°νλ₯Ό ν μ μλ€.const
// ν¨μ μμ±
function foo() {
console.log("arrow function");
}
// νμ΄ν ν¨μ μμ± λ°©λ²
const foo = () => {
console.log("arrow function");
};
foo(); // arrow function
// 맀κ°λ³μκ° μλ κ²½μ°
const foo = (x) => {
return x;
};
// 맀κ°λ³μκ° 1κ°μΈ κ²½μ° μκ΄νΈ μλ΅ κ°λ₯
const foo = x => {
return x;
};
// ν¨μκ° λ°λ‘ κ°μ λ°νν κ²½μ° μ€κ΄νΈ μλ΅ κ°λ₯
// ν¨μ λ΄μ μ½λκ° μ¬λ¬ μ€μΈ κ²½μ° μ€κ΄νΈ μ΄μ©
const foo = x => x;
// 맀κ°λ³μκ° 2κ°μ΄κ³ ν¨μκ° λ°λ‘ λ°ννλ κ²½μ°
const foo = (x, y) => x + y;
const object = { a: 1, b: 2 };
// κ°μ²΄ μμ ν€λ₯Ό ν΅ν΄ κ°μ λ°μμ¬ μ μλ€.
// λ§μ½ κ°μ²΄μ λ§μ κ°―μμ key κ°μ΄ μλ€λ©΄ μλμ κ°μ λ°©μμ λΉν¨μ¨μ μ΄λ€.
const a = object.a;
const b = object.b;
console.log(a); // 1
console.log(b); // 2
=> μ΄λ₯Ό ν΄κ²°νκΈ° μν΄ λΉκ΅¬μ‘°ν ν λΉμ΄ μ겨λ¨
// κ°μ²΄
const object = { a: 1, b: 2 };
// μ€κ΄νΈ(λΉκ΅¬μ‘°ν ν λΉ)λ₯Ό μ΄μ©ν΄μ objectμ keyλ₯Ό λ°νμΌλ‘
// keyκ° μΆλ ₯ κ°λ₯
const { a, b } = object;
console.log(a); // 1
console.log(b); // 2
// λ°°μ΄
const arr = [1, 2];
// arrλΌλ λ°°μ΄μ λ°μμμ
// arrμ 첫 λ²μ§Έ μ리μ μλ 1μ oneλΌλ μμμ ν λΉ
// arrμ λ λ²μ§Έ μ리μ μλ 2λ₯Ό twoλΌλ μμμ ν λΉ
const [one, two] = arr;
console.log(one); // 1
console.log(two); // 2
promise
, async
, await
=> ν¨μλ₯Ό μ€ννκ³ λ°λ‘ λ€λ₯Ό μ΄μ΄μ ν¨μλ₯Ό μ€νμν¬ μ μλλ‘ νλ callback λ°©μμ μ·¨νλ€.
A((a) => {
B(a, (b) => {
C(b, (c) => {
console.log("callback hell");
});
});
});
=> promise
λ‘ callback hellμ νμΆν μ μλ€.
promise
promise
μ 3κ°μ§ μν
function sayHello() {
// μ±κ³΅νμ λ resolveλ₯Ό νΈμΆ
// μ€ν¨νμ λ rejextλ₯Ό νΈμΆ
return new Promise((resolve, reject) => {
// μ±κ³΅
const hello = "Hello Hello";
resolve(hello);
});
}
sayHello().then((resolveData) => {
console.log(resolveData); // Hello Hello
});
μλ² μ
μ₯μμ μλ²κ° μ μλνλ€κ° μ€λ₯κ° λ°μνμ κ²½μ°, μλ¬ νΈλ€λ§ νμ
=> rejectλ₯Ό ν΅ν΄ μλ¬ νΈλ€λ§
function sayHello() {
// μ±κ³΅νμ λ resolveλ₯Ό νΈμΆ
// μ€ν¨νμ λ rejextλ₯Ό νΈμΆ
return new Promise((resolve, reject) => {
// μ€ν¨
reject(new Error());
});
}
sayHello()
.then((resolveData) => {
console.log(resolveData);
})
.catch((error) => {
console.log(error);
});
thenμ μ°μμ μΌλ‘ μ¬μ©νκΈ°
function sayHello() {
return new Promise((resolve, reject) => {
resolve("hello!!!");
});
}
sayHello()
.then((resolveData) => {
console.log(resolveData); // hello!!!
return resolveData;
})
.then((resolveData) => {
console.log(resolveData); // hello!!!
return resolveData;
})
.then((resolveData) => {
console.log(resolveData); // hello!!!
return resolveData;
})
.catch((error) => {
console.log(error);
});
=> then
μ μ΄μ©ν΄μ callbackμ΄ λ§μ΄ λ§λ€μ΄μ§λ κ²μ λ°©μ§νμΌλ, then
λ λ§μ΄ μ¬μ©νλ©΄ 볡μ‘ν΄ λ³΄μΌ μ μλ€.
=> μ΄κ²μ ν΄κ²°νκΈ° μν΄ async
μ await
κ° λ±μ₯!
async
μ await
function sayHello() {
return new Promise((resolve, reject) => {
resolve("hello!!!");
});
}
// awaitμ μ°κΈ° μν΄ function μμ asyncλ₯Ό μμ±ν΄μ€λ€
async function test() {
// awaitμ μμ±νμ§ μμ κ²½μ°, λ°μ μλ μ½λλ€μ΄ λ°λ‘ μ€νλ μ μμΌλ―λ‘
// sayHello()κ° μ€νλκ³ λ ν λ°λ‘ λ°μ μ½λλ€μ μ€ννκ² λ€λ κ²μ
// await ν€μλλ₯Ό ν΅ν΄ λμ
const hello = await sayHello();
console.log(hello); // hello!!!
}
test();
async
ν€μλμ await
ν€μλλ₯Ό μ¬μ©νμ¬ μ½λ μ€νμΌλ§μ ν μ μλ€..then
μ μ¬μ©νλ λ¬Έλ²μ JavaScriptμ νΉνλ λ¬Έλ²μ΄κΈ° λλ¬Έμ κΈ°μ‘΄μ λ¬Έλ²κ³Όλ μ°¨μ΄κ° μλ€.