
전달인자로 다른 함수에 전달되는 함수
동기식 콜백은 중간에 비동기 작업 없이 외부 함수 호출 직후에 바로 호출,
비동기식 콜백은 비동기 작업이 완료된 후 나중에 호출됨
let value = 1;
doSomething(() => {
value = 2;
});
console.log(value);
동기식 콜백 호출 경우 결과는 2,
비동기식의 경우 결과는 1
동기식, 프로그램이 직렬적으로 수행(task를 위부터 아래까지 순서대로)
→ 차례에 맞게 실행됨으로 순서를 예측하기 쉬움
비동기식, 병렬적으로 독립적으로 수행(순서대로 task를 실행하지 않음)
→ 동시다발적으로 실행되므로 예측 어렵고 혼란스러움, 그러나 빠른 장점

서버와의 통신(언제 끝날지 알 수 없는 작업들)은 비동기적으로 처리하는 경우가 많다
ex) javascript fetch api
fetch("https://jsonplaceholder.typicode.com/posts/1")
.then((response) => response.json())
.then((data) => console.log(data));
위의 fetch함수와 같이, 어떤 함수의 리턴값이 Promise이면, 그 작업은 비동기적으로 동작할 가능성이 크다.
이 함수가 리턴한 값은 2개의 method(.then, .catch)를 사용할 수 있다.
then과 catch는 모두 콜백 함수를 받고, 파라미터를 하나씩 가진다

성공했을 경우, then으로 전달된 함수가 실행되고 실패했을 경우 catch로 전달된 함수가 실행된다
