드림코딩 엘리님의 설명을 받아 적으며 학습한 내용임을 안내드립니다.
1. 동기와 비동기의 차이점
자바스크립트는 동기적이다.
=> 호이스팅(var변수와 함수선언이 자동적으로 제일 위로 올라가는 현상)이 된 이후부터 코드가 작성순서에 맞추어 차례대로 실행된다는 말.
비동기라는 말 : 언제 코드가 실행될 지 예측할 수 없다는 말. (ex: setTimeout을 이용한 경우 비동기적인 실행방법)
setTimeout(function(){
console.log('Hello World');
}, 1000)
콜백함수 : ('Hello World')를 console.log하는 setTimeout안의 함수는 바로 실행되는 것이 아니라, setTimeout이라는 함수의 parameter(인자)로서 지정한 시간 이후에 실행된다. 함수를 당장 실행하지 않고 1초가 지난 다음에 내 함수를 실행해줘, 내 함수를 나중에 다시(back) 불러줘(call)라는 것 처럼 parameter에 전달하는 함수를 callback함수라고 함.
2. promise
promise는 비동기적인 실행을 위한 자바스크립트 object이다.
promise의 두가지 포인트 : 상태(state)(정보를 받아오는 중인지, 성공했는지 실패했는지), Producer(정보 제공자) vs Consumer(정보 소비자)(정보 제공자와 정보 소비자의 서로 다른 견해를 이해)
State : promise가 만들어져서 지정한 operation을 수행 중일때는 pending상태이고 operation을 성공적으로 다 끝내면 fulfilled state가 되고 성공적으로 operation을 끝내지 못했을 때는 rejected state가 됨.
promise를 만드는 순간 전달한 executer라는 callback 함수가 실행된다.
'코드스테이츠' 카테고리의 다른 글
2021년 5월 31일 코드스테이츠 DAY-57 첫 아고라 스테이츠(코드 스테이츠의 stackoverflow) (0) | 2021.05.31 |
---|---|
2021년 5월 18일 코드스테이츠 DAY-44 fetch API 예습 및 응용 예제(랜덤 고양이 생성하기) 만들어보기(feat. vanilla javascript) (0) | 2021.05.19 |
2021년 5월 16일 코드스테이츠 DAY-42 자료구조 코플릿 문제 (0) | 2021.05.16 |
2021년 5월 12일 코드스테이츠 DAY-38 JSON.stringify 구현 관련 정리 (0) | 2021.05.12 |
2021년 5월 11일 코드스테이츠 DAY-37 JSON 예습 + 첫 프로그래머스 (0) | 2021.05.12 |