// 예시)
// resolve와 reject를 둘 다 호출하는 Promise 예시
1 function fetchData(condition) {
2 return new Promise((resolve, reject) => {
3 setTimeout(() => {
4 if (condition) {
5 const data = "Fetched data from server";
6 // 성공적으로 완료될 때 resolve를 호출하여 결과 값을 전달
7 resolve(data);
8 } else {
9 // 실패할 때 reject를 호출하여 에러를 전달
10 reject(new Error("Failed to fetch data from server"));
11 }
12 }, 2000);
13 });
14 }
15
16 // Promise 사용 예시
17 fetchData(true)
18 .then((result) => {
19 console.log(result); // "Fetched data from server" (2초 후에 출력)
20 })
21 .catch((error) => {
22 console.error(error); // 실패할 경우, Error 객체 출력 (조건에 따라 출력 여부 달라짐)
23 });
promiseAjax(wrongUrl)
.then(res => console.log(res), err => console.error(err)); // Error: 404
promiseAjax(wrongUrl)
.then(res => console.log(res))
.catch(err => console.error(err)); // Error: 404
then(undefined, onRejected)을 호출한다.promiseAjax(wrongUrl)
.then(res => console.log(res))
.then(undefined, err => console.error(err)); // Error: 404
function fetchData(condition) {
return new Promise((resolve, reject) => {
setTimeout(() => {
if (condition) {
const data = "Fetched data from server";
resolve(data);
} else {
reject(new Error("Failed to fetch data from server"));
}
}, 2000);
});
}
fetchData(true)
.then((result1) => {
console.log(result1);
return fetchData(false);
})
.then((result2) => {
console.log(result2);
})
.catch((error) => {
console.error(error);
});
const resolvedPromise = Promise.resolve([1, 2, 3]);
resolvedPromise.then(console.log); // [ 1, 2, 3 ]
const rejectedPromise = Promise.reject(new Error('Error!'));
rejectedPromise.catch(console.log); // Error: Error!
// above are same as below:
const resolvedPromise = new Promise(resolve => resolve([1, 2, 3]));
resolvedPromise.then(console.log); // [ 1, 2, 3 ]
const rejectedPromise = new Promise((resolve, reject) => reject(new Error('Error!')));
rejectedPromise.catch(console.log); // Error: Error!
Promise.all([
new Promise(resolve => setTimeout(() => resolve(1), 3000)), // 1
new Promise(resolve => setTimeout(() => resolve(2), 2000)), // 2
new Promise(resolve => setTimeout(() => resolve(3), 1000)) // 3
]).then(console.log) // [ 1, 2, 3 ]
.catch(console.log);
첫 번째 프로미스: 3초 후에 1을 resolve하여 처리 결과 반환
두 번째 프로미스: 2초 후에 2를 resolve하여 처리 결과 반환
세 번째 프로미스: 1초 후에 3을 resolve하여 처리 결과 반환
즉, 3초 후에 [1, 2, 3]이 출력된다.
function fetchData(condition) {
return new Promise((resolve, reject) => {
setTimeout(() => {
if (condition) {
const data = "Fetched data from server";
resolve(data);
}
else {
reject(new Error("Something went wrong"));
}
}, 2000);
});
}
async function fetchDataAsync() {
try {
const result = await fetchData(false);
console.log(result);
} catch (error) {
console.error(error);
}
}
fetchDataAsync();