asnyc/await 는 비동기 코드를 작성하는 새로운 방법이다.
async/await는 promise처럼 non-blocking 이다.
비동기 코드의 겉모습과 동작을 좀 더 동기 코드와 유사하게 만들어준다는 것이 가장 큰 장점이다.
async function main(title) {
let posts = await getPostsByTitle(title);
}
만약 일반 함수 혹은 전역 컨텍스트(window)에서 await를 사용하면 에러가 발생한다. await를 사용하려면 항상 async가 선언된 함수 내부에서 사용해야 한다.
async function a() {
return 1;
}
let result = a(); // Promise {<resolved>: 1}
일반적으로 async / await 는 비동기 함수를 처리하기 위해 사용한다. 하지만, 비동기 처리가 없는 일반적인 함수에 async를 붙이면 리턴해주는 값을 resolve로 감싼 Promise를 리턴해준다.
async function a() {
return 1;
}
async function main() {
let promise = a(); // Promise {<resolved>: 1}
let value = await a(); // 1
}
async 함수를 실행하면 Promise 객체를 리턴한다. 이 때 만약 await 키워드를 사용하면 내부의 값을 리턴한다. 이 부분을 응용하면 아래와 같이 사용할수 있다.
아래 예제를 보면 getUserById(id).then(user => { ... }) 와 같이 then을 사용하여 블록 안에서 결과(user)를 받고 있다.
이 부분을 await로 대체하면 then 없이도 결과를 받아서 변수에 저장할 수 있다.
const USERS = 'https://jsonplaceholder.typicode.com/users';
function getUserById(id) {
return fetch(`${USERS}/${id}`)
.then(res => res.json());
}
function main() {
getUserById(1).then(user => {
console.log('user : ', user);
// ... do something with user data
});
}
async function main() {
let user = await getUserById(1);
console.log(user);
// ... do something with user data
}
즉, await 키워드가 내포하고 있는 기능은 두 가지로 볼 수 있다.
1. 비동기 함수가 끝날때까지 wating 시킨다.
2. 비동기 함수가 리턴하는 값을 뽑아낸다.
Unlock your potential with Adobe https://www.examstrust.com/product-detail/ad0-e716-cert-exam.html Elevate your career to new heights in 2023 by mastering the AD0-E716 exam. Our comprehensive study materials ensure success, covering every essential topic with precision. Immerse yourself in interactive learning experiences crafted by industry experts, and gain hands-on skills that set you apart. Boost your confidence with practice exams designed to mirror the real test environment. Stay ahead of the curve with the latest updates and insights. Choose success, choose Adobe AD0-E716. Transform your aspirations into achievements—your journey to success begins here. Embrace the future of digital excellence!