250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 Hooks
- 내일배움캠프
- 파이썬 slice
- 리액트 공식문서
- 타입스크립트 props
- 리액트 프로젝트
- Next 팀 프로젝트
- 내배캠 프로젝트
- 리액트 훅
- JavaScript
- 내일배움캠프 최종 프로젝트
- 리액트
- 파이썬 for in
- REACT
- 타입스크립트 리액트
- 파이썬 enumerate
- 파이썬 딕셔너리
- 타입스크립트
- 파이썬 for
- 한글 공부 사이트
- useEffect
- 파이썬 replace
- tanstack query
- useState
- 코딩테스트
- 파이썬 반복문
- typeScript
- 내일배움캠프 프로젝트
- 자바스크립트
Archives
- Today
- Total
sohyeon kim
[JS] async, await(1) Promise.race 본문
728x90
❗️ Promise를 이용하지 않아도 좀 더 간단하게 비동기를 작성할 수 있는 방법!
function 앞에 async를 쓰면 Promise를 쓰지 않아도 자동적으로 함수 안 코드들이 Promise로 바뀐다.
// function fetchUser() {
// return new Promise((resolve, reject) => {
// // do network reqeust in 10 secs...
// resolve(`aotoyae`);
// });
// }
async function fetchUser() {
// do network reqeust in 10 secs...
return `aotoyae`;
}
const user = fetchUser();
user.then(console.log);
console.log(user);
// 2. await
// 비동기 코드이지만 동기적 코드를 쓴 것 처럼!
function delay(ms) {
return new Promise((resolve) => setTimeout(resolve, ms));
}
async function getMelon() {
await delay(2000);
return `🍈`;
}
async function getLemon() {
await delay(1000);
return `🍋`;
}
async function pickFruits() {
const melonPromise = getMelon();
const lemonPromise = getLemon();
// >> getMelon, getLemon이 동시에 실행된다
const melon = await melonPromise;
const lemon = await lemonPromise;
return `${melon} + ${lemon}`;
}
pickFruits().then(console.log); // `🍈 + 🍋`
// 3. useful Promise APIs
// Promise배열을 전달하게 되면 모든 Promise들이 병렬적으로 다 받을 때까지 모아주는 기능?
function pickAllFruits() {
return Promise.all([getMelon(), getLemon()]).then((fruits) =>
fruits.join(` + `)
);
}
pickAllFruits().then(console.log); // `🍈 + 🍋`
// + race
// 배열에 전달된 Promise 중에서 가장 먼저 값을 return 하는 애만 전달됨
function pickOnlyOne() {
return Promise.race([getMelon(), getLemon()]);
}
pickOnlyOne().then(console.log); // `🍋`
🔗 https://youtu.be/aoQSOZfz3vQ?si=1EIuEXtCxS2MvKoJ
728x90
반응형
'JavaScript' 카테고리의 다른 글
[JS] Generator 제너레이터, yield, next(), Symbol.iterator (1) | 2023.12.15 |
---|---|
[JS] async, await(2) try, catch, Promise.all (0) | 2023.12.15 |
[JS] 프로미스 Promise(2) Promise.all, Promise.race, 프로미스 체이닝 (0) | 2023.12.15 |
[JS] 프로미스 Promise(1) resolve, reject, 프로미스 체이닝 (0) | 2023.12.15 |
[JS] class 클래스, overriding 오버라이딩, 메소드 오버라이딩, (0) | 2023.12.15 |