const message = function() {
console.log("This message is shown after 3 seconds");
}
setTimeout(message, 3000); // message 함수는 어떤 일이 일어나기 전이 아니라 뒤에(여기서는 3초가 지난 후에) 호출
setTimeout(() => {
console.log("This message is shown after 3 seconds");
}, 3000);
콜백 함수를 사용할 때, 파라라미터 ( 인자 ) 로 전달하는 방식이 반복되면서 코드들이 충격적인 들여쓰기가 되있는 것이 콜백 지옥!
- 네트워크에서 데이터를 받아오는 상황
- 파일을 읽어오는 상황
- 이벤트 처리
- 서버 통신 등 ..
비동기적 작업을 수행하게 되면 발생한다.
=> 가독성이 매우 떨어지고 에러가 생기면 코드수정 및 디버깅 하기가 어려움!!
비동기적인 기능인 코드를 콜백함수를 대신해 사용!!
- Promise
- async & await
- AJAX
- Generator
자바스크립트에서 제공하는 비동기를 간편하게 처리하도록 도와주는 object객체
기존의 비동기 처리 방식인 콜백함수와 Promise의 단점을 보완하고 개발자가 읽기 좋은 코드를 작성할 수 있도록 함
- 함수 앞에 async 예약어 붙이기
- 함수의 내부 로직 중 HTTP 통신을 하는 비동기 처리 코드( Promise ) 앞에 await을 붙이기
async function 함수명() { await 비동기_처리_메서드_명(); };
async & await이 나오기 전에 사용되던 HTTP를 통신하는 도구