Promise 클래스 대신 비동기 및 대기를 사용하는 이유는 무엇입니까?
약속이란 무엇입니까
Promise는 비동기식 코드를 작성하는 방법입니다. 즉, 함수는 미래의 특정 시간에 일부 데이터를 반환하고 코드는 계속 실행됩니다. 예를 들어 배가 고파서 햄버거를 만들고 싶다고 가정해 봅시다. 그래서 우리가하는 일은 고기를 스토브에 올려 놓고 동시에 야채를자를 수 있습니다. 고기가 준비되면 핫플레이트에서 고기를 꺼내 버거에 넣고 야채를 넣고 준비합니다. 고기를 요리하는 것은 약속이며 준비가 되면 이것으로 무언가를 하는 것을 비동기 프로그래밍이라고 합니다.
용법
여기에 일부 데이터를 가져오는 간단한 함수가 일부 데이터를 로드합니다. 다음은 2개의 메서드가 있는 Promise 클래스를 사용하여 수행하는 두 가지 방법입니다. .then은 약속이 끝났을 때 그리고 오류가 있을 때 .catch입니다.
const makeRequest = () => {
getUserData
.then(user => {
console.log(user);
});
}
const makeRequest = async () => {
console.log(await getUserData());
}
우리가 보는 것은 async & await를 사용하면 더 적은 코드를 작성하지만 이러한 방식으로 1개의 함수가 있을 때 await 또는 promise 클래스를 사용하는지 여부는 중요하지 않다는 것입니다. 그러나 서로 의존하는 2개 이상의 기능이 있으면 어떻게 될까요? 예를 들어, 먼저 사용자를 얻은 다음 사용자가 가입한 모든 클럽을 가져오려고 합니다. 다음은 2가지 구현입니다.
const makeRequest = () => {
getUserData
.then(user => {
getClubsForUser(user.id)
.then(clubs => {
console.log(clubs);
}).catch(err => {
console.log(err.message);
})
}).catch(err => {
console.log(err.message);
})
};
const makeRequest = async () => {
try {
let user = await getUserData();
let clubs = await getClubsForUser(user.id);
console.log(clubs);
}
catch(err) {
console.log(err.message);
}
};
첫 번째 예를 보면 머리가 아프다. 그 중첩, 중괄호에서 길을 잃기 쉽습니다.
두 번째 예에서 async & await 코드가 더 깔끔하고 읽기 쉽다는 것을 알 수 있습니다. 또한 우리가 다루는 것은 콜백 지옥입니다. Async & await는 비동기 코드를 작성하기 위한 문법적 설탕입니다. 코드가 동기 코드처럼 보이고 동작하도록 만들지만 비동기 상태로 유지됩니다.
결론
어떤 사람들은 async & await를 사용하면 비동기 코드가 덜 명확해질 수 있다고 말할 수 있습니다. 그러나 C#에는 수년 동안 이 기능이 있었고 이 기능에 익숙한 사람들은 이 사소한 일시적인 불편을 감수할 가치가 있음을 알고 있습니다.
Reference
이 문제에 관하여(Promise 클래스 대신 비동기 및 대기를 사용하는 이유는 무엇입니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/svetloslav15/why-to-use-async-await-instead-of-the-promise-class-4can텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)