[주특기 심화 ] TIL

hoya.a·2022년 4월 6일
0

항해99

목록 보기
11/24

비동기

  • 어떤 작업하나를 요청해놓고 다른 작업하다가 결과를 받으면 나머지 일을 하는것

자바스크립트는 싱글 쓰레드로 동작(쓰레드 = 일꾼) -> 작업을 하나씩하고 동시작업을 하지 않는다.
=> 자바 스크립트는 비동기 작업을 동시에 할 수 있다.

싱글쓰레드 = 콜스텍이 하나 => 작업을 시작하면 콜스특에 한개씩 쌓이고 작업을 끝내면 한개씩 사라진다.

비동기 => 자바스크립트 실행을 도와주는 친구들과 같이 처리를 한다.
엔진 + Web API( ex) AJAX, setTimeout, dom, 등등) 콜백큐, 이벤트 루프

자바스크립트는 비동기 요청을 받으면 콜스텍에 들어갔다가 웹 api에 일을 위임한다. 그러면 콜백함수는 이벤트루프를 통해서 콜백큐에 콜백함수를 넘긴다. 그러면 콜스텍이 처리하고 사라진다

비동기 작업을 여러번하면 받아온 값을 가지고 비동기 작업을 하고 이게 반복되면 중첩되고 코드가 깊어지고 어려워진다. (=콜벡헬) 이 현상을 현상하고자 나온게 Promise 이다.

Promise : 비동기연산이 종료된 이후에 결과를 알기위해 사용되는 객체

async, await

async는 함수앞에 붙여서 사용, 항상 프라미스를 반환(프라미스가 아닌값이라도 프라미스를 감싸서 반환)
await는 async없이 사용 불가능 async의 함수 안에서만 동작한다. await는 프라미스가 처리될 때까지 기다렸다가 그 이후에 결과를 반환.

profile
TIL 정리

0개의 댓글