Promise, async, await는 JavaScript에서 비동기 프로그램을 다루는 중요한 개념이다.
: 비동기 작업의 완료 또는 실패를 나타내는 객체이다.
Promise는 세 가지 상태를 가질 수 있다.
Promises는 resolve 와 reject 함수를 인자로 받아, 작업이 성공하면 resolve 를 실패하면 reject 를 호출한다.
let promise = new Promise((resolve, reject) => {
// 비동기 작업 수행
let success = true; // 예시로 성공 여부 결정
if (success) {
resolve("작업 성공!");
} else {
reject("작업 실패!");
}
});
// Promise 사용
promise
.then(result => {
console.log(result); // "작업 성공!" 출력
})
.catch(error => {
console.log(error); // "작업 실패!" 출력
});
async 키워드는 함수가 Promise를 반환하도록 만든다. 이 키워드는 비동기 함수를 선언할 때 사용하며, 함수 내에서 await 키워드를 사용할 수 있다.
async function fetchData() {
return "데이터";
}
fetchData().then(data => console.log(data)); // "데이터" 출력
await 키워드는 async 함수 내에서만 사용 가능하며, Promise가 처리될 때까지 함수 실행을 일시정지 시킨다. await은 Promise가 해결될 때까지 기다린 후, 그 결과값을 반환한다.
만약, Promise가 거부되면 await은 오류를 발생시킨다.
async function fetchData() {
let promise = new Promise((resolve, reject) => {
setTimeout(() => resolve("데이터"), 1000);
});
let result = await promise; // Promise가 해결될 때까지 기다림
console.log(result); // "데이터" 출력
}
fetchData();
: 비동기 작업의 완료 또는 실패를 나타내는 객체. then 과 catch 로 결과를 처리함
: 함수를 비동기 함수로 만들어, 자동으로 Promise를 반환하도록 함
: 비동기 함수 내에서 사용되어 Promise가 해결될 때까지 기다림
※ 참고
https://springfall.cc/article/2022-11/easy-promise-async-await