자바스크립트에서 흔히 비동기 처리에 사용되는 두가지 방법이 있다.
바로 callback과 Promise 이다.
말그대로 나중에 다시 부를께 라는 말이다.
즉 함수가 끝나고 난 뒤에 실행되는 함수이다. 따라서 개발자가 함수의 동작 순서를 임의로 조절할수 있다. 비동기 처리라고 한다면 언제 정상적인 처리가 이루어 지는지 정확히 알아낼수 없다.특정코드가 마무리되기 전에 실행되지 않도록, 즉 비동기처리를 위한 방법이다.
콜백함수는..
1.다른 함수의 인자로써 사용되는 함수
2.이벤트로써 사용되는 함수
이렇게 정의 할 수 있겠다.
const aaa=()=>{
console.log("콜백");
}
const bbb=(aaa)=>{
console.log("aaa야 어서와")
return aaa()
}
bbb(aaa)
이런식으로 bbb 에서 선언된 aaa 함수를 인자로 받아서 bbb 함수에서 aaa 함수를 호출 후 리턴해주고 있다. 이렇게 함수를 실행하고 끝난 뒤에 마지막으로 나중에 실행되는 이러한 함수를 콜백 함수라고 한다.
프로미스는 말그대로 약속이다.
자바스크립트에서 비동기 처리에 사용되는 객체이다.
JS로 부터 약속을 받는것이다.
간단한 예제를 확인해보자.
const a = true
const promise = new Promise((resolve,reject)=>{
if(a === true){
resolve("성공")
}else{
reject("실패")
}
})
promise.then((res)=>{
console.log(res)
}).catch((error)=>{
console.log(error)
})
프로미스는 지속적인 비동기 처리 요청에서 콜백 지옥을 겪어야 했기에 나온 방식이다.
프로미스는 총 세가지 상태 pending,Fulfilled,reject 총 세가지 상태 값이 있으며,
fulfilled 상태 일때에는 .then 이후 콜백으로 성공한 값에 대한 반환값을 받을 수 있으며 reject 상태 일때는 catch 문에서 콜백으로 인해 해당 error를 반환 할 수 있다.