Promise
Javascript에서 비동기 프로그래밍을 위해 사용하는 중요한 기능 중 하나가 Promise이다.
Promise는 비동기 작업의 최종 완료 또는 실패를 나타내는 객체로, then()과 catch() 메소드를 사용하여 성공 또는 실패 시 수행할 작업을 지정할 수 있다.
장점 : 비동기 작업을 쉽게 처리할 수 있음
단점 : 코드가 복잡해지면 콜백 지옥에 빠질 수 있음
// Promise 예시
const myPromise = new Promise((resolve, reject) => {
setTimeOut(() => {
resolve('Success');
}, 1000);
})
myPromise.then((value) => {
console.log(value); // 1초 후 'Success' 문자열 반환
}).catch((error) => {
console.log(error);
})
async/await
Promise를 좀 더 쉽게 사용할 수 있도록 도와주는 문법으로, async 함수 내에서 await 키워드를 사용하여 Promise가 완료될 때까지 기다리고 결과를 반환한다.
장점 : 코드의 가독성이 좋아짐
단점 : try/catch 문을 사용하여 에러처리를 해야 함
// async/await 예시
async function getData() {
try {
const response = await fetch('https://api.example.com/data');
const data = await response.json();
console.log(data);
} catch (error) {
console.log(error);
}
}
getData();
Promise와 async/await은 서로 보완재며 함께 사용된다. Promise를 사용하여 비동기 작업을 처리하고, async/await을 사용하여 코드의 가독성을 높일 수 있다.
클로저(Closure)
프로그래밍 언어에서 사용되는 기술로, 첫 번째 클래스 함수를 가진 언어에서 어휘적 범위 이름 바인딩을 구현하는데 사용되고, 운영적으로 클로저는 함수와 환경을 함께 저장하는 레코드이다.
function makeAdder(x) {
return function(y) {
return x + y;
};
}
let add5 = makeAdder(5);
let add10 = makeAdder(10);
console.log(add5(2)); // 7
console.log(add10(2)); // 12
makeAdder
함수는 클로저를 반환하고 이 클로저는 x
의 값을 캡처하고 y
의 값을 더한다.
add5
와 add10
은 각각 makeAdder
함수에 다른 인수를 전달하여 생성된 클로저다.