JavaScript의 콜백 지옥
그런 식으로 우리는 오류가 발생하기 쉽고 읽기 어렵고 유지 관리하기 어려운 코드로 쉽게 끝납니다. Soln: 이를 처리하는 최상의 코드 연습입니다.
이는 복잡한 중첩 콜백으로 코딩하여 발생하는 큰 문제입니다. 여기에서 각각의 모든 콜백은 이전 콜백의 결과인 인수를 사용합니다. 이렇게 하면 코드 구조가 피라미드처럼 보이기 때문에 읽고 유지하기가 어렵습니다.
⇒ 콜백 지옥의 예.
→ 구현.
// GetData..
function getData(path, cb){
const data = []; // Somehow collect the Data..
cb(data);
}
function getUserNameFromComment(username){
getData(`/users?username=${username}`, (user) => {
getData(`/posts?user_id=${user._id}`, (posts) => {
getData(`/comments?post_id=${posts[0]._id}`, (comments) => {
getData(`/users?username=${comments[0].username}`, (user) => {
// Then 😃 you can get latest user of comment.
console.log(user);
});
});
});
});
}
getUserNameFromComment("Mohammad Asad");
콜백 지옥의 실생활 예.
/// Real World Example with Fake REST API..
// Example of Callback Hell.
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';
function getFunc(URL, cb){
Axios.get(`${URL}`)
.then((response) => {
const { data } = response;
cb(data);
});
}
function getCommentByUser(username){
getFunc(`${USERS_URL}?username=${username}`, (user) => {
getFunc(`${POSTS_URL}?userId=${user[0].id}`, (posts) => {
getFunc(`${COMMENTS_URL}?postId=${posts[0].id}`, (comments) => {
const firstComment = comments[0];
console.log(firstComment);
});
});
});
}
getCommentByUser("Samantha");
콜백 지옥의 해결책을 보자
Reference
이 문제에 관하여(JavaScript의 콜백 지옥), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/asadanik/callback-hell-in-javascript-29bd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)