JavaScript의 프로미스에서 발생하는 예외 상황
이제 프로미스 내부에서 발생하는 예외 상황을 처리하는 방법을 배워봅시다. 이러한 상황이 발생하면 프로미스의 함수에 자동으로 전달되는 두 번째 매개변수인 특별한 reject 함수를 사용하여 프로미스를 거부해야 합니다:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
...
}, 3000);
});
프로미스 함수 내부에서는 모든 것이 정상적으로 진행되면
resolve를 호출해야 하고, 예외 상황이 발생하면
reject를 호출해야 합니다:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
let isError = false;
if (!isError) {
resolve([1, 2, 3, 4, 5]); // 프로미스 데이터
} else {
reject('error in promise'); // 당신의 에러 텍스트
}
}, 3000);
});
그런 다음 then 메서드에 매개변수로 하나가 아닌 두 개의 함수를 전달해야 합니다:
첫 번째는 프로미스가 정상적으로 실행되었을 때(해결되었을 때) 작동하고,
두 번째는 오류와 함께 실행되었을 때(거부되었을 때) 작동합니다:
promise.then(
function(result) {
console.log(result); // 프로미스 결과를 출력합니다
},
function(error) {
console.log(error); // 에러 텍스트를 출력합니다
}
);
일반적으로 위의 코드는 다음과 같이 더 간결하게 작성합니다:
promise.then(function(result) {
console.log(result); // 프로미스 결과를 출력합니다
}, function(error) {
console.log(error); // 에러 텍스트를 출력합니다
});
0부터 5까지의 난수를 생성하는 비동기 코드를 만드세요.
이 모든 것을 프로미스로 감싸세요. 프로미스가 생성된 숫자로 1을 나눈 결과를
반환하도록 하세요. 0으로 나누기가 발생하면 프로미스가 오류와 함께 실행되고,
다른 모든 경우에는 성공적으로 실행되도록 하세요.