JavaScript의 콜백 지옥 솔루션
약속은 콜백 지옥에 대한 해결책이 될 수 있지만 결국 then, catch의 연결과 같은 자체 상황이 있습니다. 그런 다음 Async-Await 개념으로 이 문제를 해결했습니다. Async-Await는 여러 번 연결하는 데 도움이 될 수 있습니다. 동기화 방식과 같은 코드를 작성하면 비동기 작업도 처리됩니다.
약속이 있는 솔루션.
⇒ Promise 체이닝의 예.
→ 구현.
// Solution Callback hell resolved with Promise..
const get = (url) => new Promise();
get(`/users?username=asadanik`)
.then((user) => {
return get(`/posts?user_id=${user.id}`);
})
.then((posts) => {
const latestPost = posts[0];
return get(`/comments?post_id=${latestPost.id}`);
})
.then((comments) => {
const latestComment = comments[0];
return get(`/users?username=${latestComment.username}`);
})
.then((user) => {
console.log('Latest Comments user is -- ', user);
})
.catch(err => {
console.log('ERR! of -- ', err);
});
Not permanent, but this is the solution of Callback hell which is nested over times. But in this case, this is not nested hell but also this is chaining hell of .this Promise. Not so much difference between this 2 examples of data retrieving. But this is not hell chaining, this is easy to maintain and readable. This problem will solve with Async Await.
.then 체이닝을 사용한 Promise의 실생활 예
/// Real World Example with Fake REST API..
// Example of Promise.
const Axios = require('axios').default;
const USERS_URL = 'https://jsonplaceholder.typicode.com/users';
const POSTS_URL = 'https://jsonplaceholder.typicode.com/posts';
const COMMENTS_URL = 'https://jsonplaceholder.typicode.com/comments';
Axios.get(`${USERS_URL}?username=Samantha`)
.then((userResponse) => {
const { data: user } = userResponse;
return Axios.get(`${POSTS_URL}?userId=${user[0].id}`);
})
.then((postsResponse) => {
const { data: posts } = postsResponse;
return Axios.get(`${COMMENTS_URL}?postId=${posts[0].id}`);
})
.then((commentsReponse) => {
const { data: comments } = commentsReponse;
const firstComment = comments[0];
console.log(firstComment);
})
.catch(error => {
console.log('ERR! of -- ', error);
});
Promise Chaining의 솔루션을 살펴보겠습니다.
Reference
이 문제에 관하여(JavaScript의 콜백 지옥 솔루션), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/asadanik/solution-of-callback-hell-in-javascript-3p8e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)