Promise 클래스가 등장하기 전에는 비동기 코드를 다루는 방법이 하나뿐이었어요. 바로 _콜백 패턴_이에요.
콜백은 다른 함수에 인자로 전달되고, 그 함수에서 어떤 작업이 끝나면 호출되는 함수예요. 이런 콜백 함수에서는 첫 번째 매개변수로 오류를 받는 방식이 흔해요 (아래 예제를 봐요).
function callback(error, arg2, arg3) {}
이게 비동기 코드와 어떻게 관련이 있을까요?
예전부터 콜백은 비동기 작업이 끝난 뒤 프로그램 전체를 막지 않고 어떤 작업을 할 수 있도록 하기 위해 사용됐어요.
fetchProduct(productId, function (error, data) {
if (error) {
// Handle the error
} else {
// Do some work
}
});
위 예제에서 fetchProduct 함수는 비동기 함수인데, 두 번째 인자로 콜백을 받아요. 이 콜백은 상품 데이터를 가져온 뒤 무엇을 할지 결정해요.
이 연습 문제의 목표는 두 가지예요:
Promise를 반환하는 함수로 바꿔 주는 promisify 함수를 구현해요. 아래 예제를 봐요.function fetchProduct(productId, function(error, data) {
if (error) {
// Handle the error
} else {
// Make something with your data
}
})
const fetchProductAsPromise = promisify(fetchProduct);
// Now you got a function `fetchProductAsPromise`
// that returns a promise
fetchProductAsPromise(productId)
.then((data) => {})
.catch((error) => {});
Promise 내장 메서드들을 직접 사용하지 않고 다시 구현해요.all: 프로미스를 담은 배열을 받아서 모두 이행되면 이행하고, 하나 라도 거부되면 거부해요.allSettled: 프로미스를 담은 배열을 받아서 모두 이행되거나 거부되면 이행해요.race: 프로미스를 담은 배열을 받아서 가장 먼저 이행되거나 거부된 프로미스의 값으로 이행하거나 거부해요.any: 프로미스를 담은 배열을 받아서 하나 가 이행되면 이행하고, 모두 거부되면 거부해요.Exercism에 가입하고 JavaScript 트랙을 개념 37개연습 문제 159개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.