참고 : https://learnjs.vlpt.us/async/
말 그대로 나중에 호출되는 함수를 이야기 한다. 콜백함수라고해서 함수랑 다를 것이 없다. 그 자체로 특별한 선언이나 문법적인 특징을 가지고 있는 것은 아니다.
단지, 어떤 이벤트가 발생했거나 특정 시점에 도달했을 때 시스템에서 호출하는 함수를 말한다. 다시 말해 호출방식에 의해 일반 함수와 구분된다.
대표적으로 콜백함수를 사용하는 이벤트헨들러 처리이다.
그 이유는 자바스크립트에서 비동기적 프로그래밍을 할 수 있기 때문이다.
만약 작업을 동기적으로 처리하면 하나의 작업이 끝날때까지 기다리는 동안 중지 상태가 되어 다른 작업을 할 수 없다. 하지만, 이를 비동기적으로 처리를 한다면 흐름이 멈추지 않기 때문에 동시에 여러 가지 작업을 처리할 수도 있고, 다른 함수도 호출할 수 있다.
work()함수를 호출하면 for문이 돌아갈때까지 다른 작업을 실행하지 않고, 다 끝난 후에 실행한다.
이것을 비동기 형태로 전환해주고 싶다면 setTimeout 함수를 사용해야한다.
setTimeout함수는 첫번째 파라미터에 함수를 넣고, 두번째 파라미터에는 시간을 넣은 후 호출해준다.
이 함수는 0을 사용해서 바로 실행한다.(실제론 4ms이후) 이렇게 사용하면 작업이 백그라운드에서 수행되기 때문에 기존의 코드 흐름을 막지 않고 동시에 다른 작업을 진행할 수 있다.
work함수가 끝난 다음에 어떤 작업을 처리하고 싶으면 work함수에 callback함수를 인자로 전잘해주면 된다.
아직 너무 헷갈리는 부분같다... 이제부터 지옥이 시작되는거 같기도하고...