FRONTEND/JavaScript

(callback) - 비동기적인 것을 제어하는 방법

MarkLEE 2021. 5. 31. 13:39

callback함수

 

function printNow(print){

     print();

}

라는 함수가 있다고 하자, 여기에서 print라는 파라미터는 printNow함수의 콜백함수가 되게 된다. 

우리는 보통 callback함수를 비동기적이라고 말을 하지만, 모든 callback함수가 비동기적인것은 아니다. 

 

만약에 printNow(() => console.log("Hi! syncrnous callback function"))이라고 하게 된다면, 

printNow의 연결인자로 들어온 익명함수는 콜백함수는 맞지만, 동기적인 함수가 되게 된다. 

하지만 만약, 

printNow(setTimeout(() => console.log("it is asynchronous"), 1000 ))

이라고 하게 된다면, 해당 함수는 비동기적인 함수가 되게 된다. 

하지만 이런식으로 계속 함수에 인자로 콜백함수, 콜백함수의 콜백함수, 콜백함수의 콜백함수.....

식으로 코드를 작성하게 되면 일명 callback-hell이 생기게 되며,

이런경우를 방지하기 위해 나온것이 promise라고 생각하면 된다.