비동기 코드 작성 시 흔히 볼 수 있다.
한국어로 약속이라는 의미로 무언가 실행 될 것이라는 보증이다.
비동기 이벤트가 실행 되었는지 여부와 이벤트가 일어난 후 무엇을 할지 결정한다.
let promise = new Promise((resolve, reject) => {
const num = Math.random();
if(num < 0.5) {
resolve(result);
} else {
reject(result);
}
});
promise
.then(result => console.log(result)) // resolve 시 결과 반영
.catch(error => console.log(error)); // reject 시 에러 캐치
다른 함수의 매개변수로 사용되는 함수를 콜백이라 부른다.
(콜백 함수를 매개변수로 사용하는 함수를 higher-order function이라 부른다.)
자바스크립트에서 함수는 객체이기 때문에 다른 함수의 매개변수로 사용할 수 있다.
어떤 다른 작업이 끝난 후에 무언가(또 다른 함수)를 실행시킬 목적으로 사용한다.
function add(num1, num2, callback) {
console.log(`${num1}과 ${num2}의 합은 ${num1 + num2}.`);
callback();
}
function someCallbackFn() {
console.log('다른 작업이 끝난 후에 실행됩니다.')
}
add(3, 4, someCallbackFn);
// result:
// 3과 4의 합은 7.
// 다른 작업이 끝난 후에 실행됩니다.