Notice
Recent Posts
Recent Comments
Link
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 프로그래머스
- REACT
- 리액트
- 리액트 프로젝트
- 파이썬 for
- useState
- 파이썬 replace
- 타입스크립트
- 리액트 훅
- JavaScript
- React Hooks
- 내일배움캠프 프로젝트
- 파이썬 enumerate
- tanstack query
- 자바스크립트
- 한글 공부 사이트
- 리액트 공식문서
- 파이썬 반복문
- useEffect
- 파이썬 for in
- 내배캠 프로젝트
- Next 팀 프로젝트
- 내일배움캠프 최종 프로젝트
- 내일배움캠프
- 파이썬 slice
- 타입스크립트 리액트
- 타입스크립트 props
- 파이썬 딕셔너리
- typeScript
- 코딩테스트
Archives
- Today
- Total
sohyeon kim
[JS] async, await(2) try, catch, Promise.all 본문
728x90
복습!
❗️ async를 사용하면 then보다 가독성이 좋아진다!
asait은 async 함수 내에서만 쓸 수 있다.
일반 함수에서 쓰면 에러 발생
function getName(name) {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(name);
}, 1000);
});
}
async function showName() {
const result = await getName("aoto"); // 기다렸다가
console.log(result); // 넣어준다
}
console.log("시작");
showName(); // 1초 후 "aoto"
try { } : 성공 시 실행
catch { } : 실패 시 실행
const f1 = () => {
return new Promise((res, rej) => {
setTimeout(() => {
res("1번 주문 완료");
}, 1000);
});
};
const f2 = (message) => {
console.log(message);
return new Promise((res, rej) => {
setTimeout(() => {
res("2번 주문 완료");
// rej("에러 발생");
}, 3000);
});
};
const f3 = (message) => {
console.log(message);
return new Promise((res, rej) => {
setTimeout(function () {
res("3번 주문 완료");
}, 2000);
});
};
console.log("시작");
async function order() {
try {
const result1 = await f1();
const result2 = await f2(result1);
const result3 = await f3(result2);
console.log(result3);
} catch (e) {
console.log(e); // 3초 후 "에러 발생"
}
console.log("종료");
}
order();
// "시작"
// 1초 후 "1번 주문 완료"
// 3초 후 "2번 주문 완료"
// 2초 후 "3번 주문 완료"
// "종료"
여기서도 Promise.all을 써보자! (위 코드에서 async 함수 부분만 변경)
console.log("시작");
async function order() {
try {
const result = await Promise.all([f1(), f2(), f3()]);
console.log(result);
} catch (e) {
console.log(e); // 3초 후 "에러 발생"
}
console.log("종료");
}
order();
// "시작"
// undefined
// undefined
// 3초 후 ['1번 주문 완료', '2번 주문 완료', '3번 주문 완료']
// "종료"
728x90
반응형
'JavaScript' 카테고리의 다른 글
[JS] ES2021에서 추가된 기능들 (0) | 2023.12.15 |
---|---|
[JS] Generator 제너레이터, yield, next(), Symbol.iterator (1) | 2023.12.15 |
[JS] async, await(1) Promise.race (0) | 2023.12.15 |
[JS] 프로미스 Promise(2) Promise.all, Promise.race, 프로미스 체이닝 (0) | 2023.12.15 |
[JS] 프로미스 Promise(1) resolve, reject, 프로미스 체이닝 (0) | 2023.12.15 |