[Day10] JS 비동기 - promise, async, await (240705)
2024. 7. 5. 17:09ㆍ공부/DGTP TIL
Promise
Promise는 비동기 작업의 완료 또는 실패를 나타내는 객체입니다. Promise는 세 가지 상태를 가질 수 있습니다:
- pending(대기): 초기 상태, 아직 완료되지 않은 상태.
- fulfilled(이행됨): 작업이 성공적으로 완료된 상태.
- rejected(거부됨): 작업이 실패한 상태.
const promise = new Promise((resolve, reject) => {
// 비동기 작업 수행
let success = true; // 작업 성공 여부 (예시)
if (success) {
resolve('작업 성공');
} else {
reject('작업 실패');
}
});
promise.then((message) => {
console.log(message); // 작업 성공 시 출력
}).catch((error) => {
console.error(error); // 작업 실패 시 출력
});
Async
async 함수는 항상 Promise를 반환합니다. 이 함수 내에서 await 키워드를 사용하여 비동기 작업의 완료를 기다릴 수 있습니다.
Await
await 키워드는 Promise가 해결될 때까지 기다립니다. await는 async 함수 안에서만 사용할 수 있습니다.
async function getData() {
try {
const response1 = await fetch('https://api.example.com/data1');
const data1 = await response1.json();
console.log('첫 번째 데이터:', data1);
const response2 = await fetch('https://api.example.com/data2');
const data2 = await response2.json();
console.log('두 번째 데이터:', data2);
return { data1, data2 };
} catch (error) {
console.error('데이터 가져오기 실패:', error);
}
}
getData().then(result => {
if (result) {
console.log('모든 데이터 가져오기 성공:', result);
}
});
getData() -> async, await를 사용하여 fetch 요청의 완료를 기다린 뒤, 각 요청이 완료되면 다음 요청이 시작.
오류가 발생하면 catch 블록에서 처리됩니다.(try-catch구문)
'공부 > DGTP TIL' 카테고리의 다른 글
[Day17] 이벤트 위임 (20240716) (0) | 2024.07.16 |
---|---|
[Day11] 프로그램 웹 개발 이론 (20240708) (0) | 2024.07.09 |
[Dau8] 객체와 DOM (240703) (0) | 2024.07.03 |
[DAY 7] 2차원 배열 만들기 (240702) (1) | 2024.07.02 |
[Day6] JS 반복문과 조건문 과제 (240701) (0) | 2024.07.01 |