동기와 비동기

2020. 1. 9. 18:18JAVASCRIPT

동기(Synchronous : 동시에 일어나는)

요청과 결과가 동시에 일어난다는 약속이다.

동기방식은 설계가 매우 간단하고 직관적이지만 결과가 주어질 때까지 아무것도 못하고 대기(Blocking)해야하는 단점이 있다.

비동기(Asynchronous : 동시에 일어나지 않는)

요청과 결과가 동시에 일어나지 않을거라는 약속이다.

동기보다 복잡하지만 결과가 주어지는데 시간이 걸리더라도 그 시간 동안 다른 작업(Non-Blocking)을 할 수 있으므로 자원을 효율적으로 사용할 수 있는 장점이 있다.

콜백함수("call" + "back")

콜백함수는 자바스크립트의 비동기성을 표현하고 관리하는 가장 일반적인 기법이자 가장 기본적인 비동기 패턴이다.

즉, 콜백함수가 실행됐다는 것으로 요청한 작업이 끝났음을 알리고, 작업의 결과물을 콜백함수를 통해 사용가능하게 됩니다. ex) 클릭 이벤트가 발생할 때 출력되는 콜백 함수.

콜백헬(hell), 피라미드 무덤

콜백함수가 늘어나면 늘어날 수록 코드의 깊이가 늘어나 더이상 헤어날 수 없다는 유머입니다.

이러한 문제에 해결방법으로 Promise라는 개념이 있습니다. 다음 장에 이어서 작성하겠습니다.