Promise 객체를 사용할 때 then 메소드 등을 사용하지 않고 코드를 작성
동기 실행 코드처럼 코드를 훨씬 더 간단하고 편하게 작성할 수 있으며 가독성이 향상
//Promise
/* fetch('https://www.google.com')
.then((response) => response.text())
.then((result) => { console.log(result); }); */
function fetchAndPrint() {
console.log(2);
fetch('https://jsonplaceholder.typicode.com/users')
.then((response) => {
console.log(7);
return response.text();
})
.then((result) => { console.log(result); });
}
console.log(1);
fetchAndPrint();
console.log(3);
console.log(4);
console.log(5);
console.log(6);
//async/await
/* fetch('https://www.google.com')
.then((response) => response.text())
.then((result) => { console.log(result); }); */
async function fetchAndPrint() {
console.log(2);
const response = await fetch('https://jsonplaceholder.typicode.com/users');
console.log(7);
const result = await response.text();
console.log(result);
}
console.log(1);
fetchAndPrint();
console.log(3);
console.log(4);
console.log(5);
console.log(6);
어떤 값을 리턴하는 경우
Promise 객체를 리턴하는 경우
Promise 객체 이외의 값을 리턴하는 경우
아무 값도 리턴하지 않는 경우
자바스크립트에서는 아무런 값도 리턴하지 않는 함수에서는 undefined를 리턴.
fulfilled 상태이면서 undefined를 작업 성공 결과로 가진 Promise 객체가 리턴
async 함수 내부에서 에러가 발생했을 때
// 1) Function Declaration (함수 선언식)
async function example1(a, b) {
return a + b;
}
// 2-1) Function Expression(Named) (함수 표현식)
const example2_1= async function add(a, b) {
return a + b;
};
// 2-2) Function Expression(Anonymous) (함수 표현식)
const example2_2 = async function(a, b) {
return a + b;
};
// 3-1) Arrow Function (화살표 함수)
const example3_1 = async (a, b) => {
return a + b;
};
// 3-2) Arrow Function(shortened) (화살표 함수)
const example3_2 = async (a, b) => a + b;
async function fetchAndPrint() {
try {
const response = await fetch('URL');
const result = await response.text();
console.log(result);
} catch (error) {
console.log(error);
} finally {
console.log('exit');
}
}
Tomorrow better than today, Laugh at myself
- 출처 -