호지

[JS 스터디] 코어자바스크립트 4강 콜백함수 본문

Front-end

[JS 스터디] 코어자바스크립트 4강 콜백함수

_hoji

스터디에서 콜백함수 관련 내용을 발표하였다. 비동기 관련 내용이 나와 추가적으로 비동기처리에 대해 조사하여, 자바스크립트에서 비동기처리에 대해 자세하게 알아볼 수 있었다. 

 

1. 콜백 함수는 무엇인가?

콜백 함수는 함수나 메서드의 인자로 넘겨주면서 제어권도 같이 넘겨준 함수를 뜻한다.

 

2. 콜백 지옥이란?

콜백함수를 익명함수로 전달하는 과정이 길어지면서 들여쓰기 수준이 깊어지는 현상. 이로 인해 코드의 가독성이 떨어지게 되는데, Promise나 Generator를 사용해 동기적으로 보이게끔 만들어줄 수 있고, async, await와 프로미스 객체를 같이 사용하는 방법이 주로 쓰임.

 

3. 비동기 vs 동기

비동기는 이전코드가 끝나지 않아도 즉시 코드를 실행하고, 동기는 이전코드가 끝나야 다음 코드를 실행 할 수 있다.

 

4. 자바스크립트는 싱글스레드인데 비동기처리가 가능한 이유?

자바스크립트는 싱글스레드로 동작하지만, 자바스크립트 엔진 외에 web API, 이벤트루프, 태스크 큐가 별도로 존재하여 코드 실행에 관여하기 때문이다. 콜백 함수같은 비동기 함수는 web API에 위임하고, web API는 실행 후 태스크 큐에 비동기 함수를 삽입한다. 이벤트루프는 계속해서 콜스택과 태스크 큐를 확인하고, 콜스택이 비어있는데, 태스크 큐가 비어있지 않다면 태스크 큐에 있는 비동기 함수를 콜스택에 올려 실행되게 한다.

 

 

 

 

Comments