💡 서버에 데이터를 요청할 때 응답을 기다리는 동안 아무것도 못 하면 사용자 경험이 나빠짐 → 그래서 네트워크 요청은 대부분 비동기로 처리
2. Promise 객체
비동기 작업의 완료 또는 실패를 처리하는 객체.
fetch(), setTimeout() 등 비동기 함수에서 사용
const promise = new Promise((resolve, reject) => {
const success = true;
if (success) {
resolve("성공!"); // fulfilled 상태로 전환
} else {
reject("실패!"); // rejected 상태로 전환
}
});
promise
.then(result => {
// resolve("성공!") 호출됐을 때 실행
console.log(result); // "성공!"
return result + " 추가 처리"; // 다음 .then()으로 값 전달 가능
})
.then(result => {
// 이전 .then()의 return 값이 넘어옴
console.log(result); // "성공! 추가 처리"
})
.catch(error => {
// reject("실패!") 호출됐을 때 실행
console.log(error); // "실패!"
})
.finally(() => {
// 성공이든 실패든 무조건 실행
console.log("항상 실행");
});
⚠️.then()은 체인으로 연결 가능 이전 .then()에서 return한 값이 다음 .then()의 파라미터로 전달됨
⚠️ .catch()는 체인 중간에 발생한 에러도 잡을 수 있음 .then() 여러 개를 연결하고 맨 마지막에 .catch() 하나만 써도 됨