티스토리 뷰
// async & await
// promise를 사용하는데 있어 깔끔한 스타일
// 1. async
/*function fetchUser() {
// 백엔드에서 요청이 10초정도 걸리는
return new Promise((resolve, reject) => {
resolve('ellie');
//reject(new Error());
});
}*/
async function fetchUser() {
return 'ellie';
}
const user = fetchUser();
user.then(console.log).catch(console.log);
//user.then().catch(console.log);
console.log(user);
// 2. await
function delay(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
// 동기적 코드처럼 보임
async function getApple() {
await delay(1000);
//throw 'error';
return 'apple';
}
async function getBanana() {
await delay(1000);
return 'banana';
}
/*function getBanana() {
return delay(3000)
.then(() => 'banana');
}*/
// 콜백지옥 코드(promise가 너무 많음)
// function pickFruits() {
// return getApple()
// .then(apple1 => {
// return getBanana()
// .then(banana1 => `${apple1} + ${banana1}`);
// });
// }
async function pickFruits() {
const applePromise = getApple();
const bananaPromise = getBanana();
// try catch를 통해 에러처리 가능
//try{
// 함수내에 promise가 선언되어 있으면 함수를 호출할 떄 앞에 await을 써줘야 함
const apple = await applePromise;
const banana = await bananaPromise;
//} catch(error) {
//}
return `${apple} + ${banana}`;
}
pickFruits().then(console.log);
// 3. useful Promise APIs
function pickAllFruits() {
return Promise.all([getApple(), getBanana()])
.then(fruits => fruits.join(' + '));
}
pickAllFruits().then(console.log);
function pickOnlyOne() {
//race -> 빨리 도착하는 함수의 결과가 출력됨
return Promise.race([getApple(), getBanana()]);
}
pickOnlyOne().then(console.log)
'javascript' 카테고리의 다른 글
[javascript] CKEditor null 체크하는 방법 (0) | 2020.12.24 |
---|---|
[javascript] Cannot read property 'search' of undefined에러 (0) | 2020.12.24 |
[javascript] promise (0) | 2020.11.19 |
[javascript] callback function (0) | 2020.11.18 |
[javascript] json (0) | 2020.11.17 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 알고리즘
- react
- BFS
- C++
- 퀵정렬
- 동적프로그래밍
- dfs
- javascript
- 최단경로
- Java
- 구조체
- 스텍
- 병행프로세스
- 클래스
- 교착상태
- 자료구조
- 재귀함수
- 세마포어
- stackframe
- 운영체제
- 배열
- server side rendering
- 이진탐색
- 인접행렬
- 입출력장치
- 인접리스트
- client side rendering
- 소프트웨어
- C
- Stack
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
글 보관함