𧩠λκΈ°μ μ½λ°±ν¨μ
// name, age, callbackμ μΈμλ‘ νλ ν¨μ μμ±
function name(name, age, callback) {
console.log(`μ΄λ¦μ ${name}μ
λλ€.`);
// μ½λ°±ν¨μ μ€ν
callback(age);
}
// ageλ₯Ό μΆλ ₯νλ ν¨μ μμ±
function age(age) {
console.log(`λμ΄λ ${age}μ΄ μ
λλ€.`);
}
/*
κ²°κ³Ό :
μ΄λ¦μ Kimμ
λλ€.
λμ΄λ 20μ΄ μ
λλ€.
*/
name("Kim", 20, age);
π₯ λκΈ°μ μΈ μ½λλ‘ νΈμΆμ νμμ§λ§ ν¨μκ° μ€νλκ³ λ λ€μ callback ν¨μκ° μ€νλμ΄ μμλ₯Ό 보μ₯νλ€.
𧩠λΉλκΈ°μ μ½λ°±ν¨μ
function name(name, age, callback) {
// λΉλκΈ°λ‘ μλνκΈ° μν΄μ setTimeout ν¨μλ₯Ό μμ±ν΄μ νΈμΆ νμ΄λ¨Έλ λλ€
setTimeout(() => console.log(`μ΄λ¦μ ${name}μ
λλ€.`), Math.random() * 1000);
// λΉλκΈ°μ μΌλ‘ μλνλ ν¨μκ° μλ μ½λ°±ν¨μ
callback(age);
}
function age(age) {
// λΉλκΈ°λ‘ μλνκΈ° μν΄μ setTimeout ν¨μλ₯Ό μμ±ν΄μ νΈμΆ νμ΄λ¨Έλ λλ€
setTimeout(() => console.log(`λμ΄λ ${age}μ΄ μ
λλ€.`), Math.random() * 1000);
}
// κ²°κ³Ό : μμ보μ₯ X
name("Kim", 20, age);
function name(name, age, callback) {
// λΉλκΈ°λ‘ μλνλ ν¨μ μμ μ½λ°±ν¨μλ‘ μ€νλ λ ν¨μλ₯Ό μΈμλ‘ λ°μ μ½λ°±ν¨μλ₯Ό μ€νν΄μ μμ보μ₯
setTimeout(() => {
console.log(`μ΄λ¦μ ${name}μ
λλ€.`);
callback(age);
}, Math.random() * 1000);
}
function age(age) {
setTimeout(() => console.log(`λμ΄λ ${age}μ΄ μ
λλ€.`), Math.random() * 1000);
}
/*
κ²°κ³Ό :
μ΄λ¦μ Kimμ
λλ€.
λμ΄λ 20μ΄ μ
λλ€.
*/
name("Kim", 20, age);
π₯ λΉλκΈ°μ μΈ ν¨μκ° ν¬ν¨λμ΄ μλ μ½λ°±ν¨μλ₯Ό λκΈ°μ μΌλ‘ μ¬μ©νκΈ° μν΄μ μ¦ μμμ μ€νμ 보μ₯μ λ°κΈ° μν΄ μ½λ°±ν¨μλ₯Ό μ¬μ©νλ€.
μ½λ°±μ§μ₯μ΄λ μ½λ°±ν¨μλ₯Ό 무μν λ§μ΄ μ¬μ©νμ¬ μ½λλ₯Ό μμ보기 νλ μνλ₯Ό λ§νλ€.
// λκΈ°μ μΌλ‘ μ€ννκΈ° μν΄μ 1 -> 2 -> 3 -> 4μ κ²°κ³Όλ₯Ό λμΆνκΈ° μν μ½λ°±ν¨μ νΈμΆ
function f1(callback) {
setTimeout(() => {
// κ²°κ³Ό : 1
console.log(1);
// 첫 λ²μ§Έ μ½λ°± νΈμΆ
callback();
}, Math.random() * 1000);
}
function f2(callback) {
setTimeout(() => {
// κ²°κ³Ό : 2
console.log(2);
// λ λ²μ§Έ μ½λ°± νΈμΆ
callback();
}, Math.random() * 1000);
}
function f3(callback) {
setTimeout(() => {
// κ²°κ³Ό : 3
console.log(3);
// μΈ λ²μ§Έ μ½λ°± νΈμΆ
callback();
}, Math.random() * 1000);
}
function f4() {
setTimeout(() => {
console.log(4);
}, Math.random() * 1000);
}
// 첫 λ²μ§Έ μ½λ°±ν¨μ νΈλ€λ¬
function callback1() {
// ν¨μ f2λ₯Ό νΈμΆνκ³ μΈμλ‘ μ½λ°±ν¨μλ₯Ό λ겨μ€
f2(callback2);
}
// λ λ²μ§Έ μ½λ°±ν¨μ νΈλ€λ¬
function callback2() {
// ν¨μ f3μ νΈμΆνκ³ μΈμλ‘ μ½λ°±ν¨μλ₯Ό λ겨μ€
f3(callback3);
}
function callback3() {
// ν¨μ f4 νΈμΆ
f4();
}
/*
κ²°κ³Ό :
1
2
3
4
*/
f1(callback1);
// μ μ½λμ λμΌνμ§λ§ ν¨μλ₯Ό λ°λ‘ λ§λ€μ§ μκ³ ν¨μ μ체μμ μ¬μ©ν μ½λ
function f1(callback) {
setTimeout(() => {
console.log(1);
callback();
}, Math.random() * 1000);
}
function f2(callback) {
setTimeout(() => {
console.log(2);
callback();
}, Math.random() * 1000);
}
function f3(callback) {
setTimeout(() => {
console.log(3);
callback();
}, Math.random() * 1000);
}
function f4() {
setTimeout(() => {
console.log(4);
}, Math.random() * 1000);
}
/*
νλΌλ―Έν°μ ν¨μλ₯Ό λ§λ€μ΄μ μ
λ ₯
κ²°κ³Ό :
1
2
3
4
*/
f1(() => {
f2(() => {
f3(() => {
f4();
});
});
});
𧩠μ½λ°±μ§μ₯ ν΄κ²°λ°©λ²