function orderFood(callback){
setTimeout(()=> {
const food="떡복이";
callback(food);
}, 3000);
}
function cooldownFood(food, callback){
setTimeout(() => {
const coolFood = `식은 ${food}`;
callback(coolFood);
}, 2000);
}
orderFood((food)=>{
console.log(food);
console.log("후 후 ~ ");
cooldownFood(food, (coolFood) => {
console.log(coolFood);
})
})// orderFood를 호출하면 setTimeout 함수 실행. 3초 후에 매개변수로 받은 callback() 호출
// 함수 안에서 cooldownFoon함수 호출해서 setTime함수 실행. 2초뒤에 매개변수로 받은 food와 callback함수 실행
중첩된 함수 setTimeout은 파라미터를 받지 않아도, 바깥 함수로부터 food 를 전달받아 함수를 실행한다.
= clousure = 함수가 선언될때 렉시컬 환경을 기억하여 그때의 변수를 참조한다.
코드 자체는 비동기 함수에 대한 예제로,
비동기함수의 결과값을 함수 바깥에서도 사용하려면
바깥함수를 호출할 때 그 결과값을 사용하려는 콜백함수를 아규먼트로 주면 된다.
콜백지옥
'개발 공부 일지 > JavaScript' 카테고리의 다른 글
자바스크립트 - 배열 메서드 (0) | 2024.08.19 |
---|---|
자바스크립트 - Date (0) | 2024.08.19 |
자바스크립트 - 무한 스크롤 (1) | 2024.08.04 |
자바스크립트 - 렉시컬 스코프 (Lexical Scope) (3) | 2024.08.02 |
복습 - 구조분해 (0) | 2024.07.30 |