JSONPlaceholder 에서 제공하는 todos 와 users 를 이용해 아래 사진과 같은 결과물을 만들 것이다.
https://jsonplaceholder.typicode.com/todos
https://jsonplaceholder.typicode.com/users
시도 1 : 어영부영 하긴했는데 내가봐도 이 코드는 나쁜 코드같음
let userList;
let todoList;
const data = async () => {
const users = await fetch("https://jsonplaceholder.typicode.com/users");
userList = await users.json();
const todos = await fetch("https://jsonplaceholder.typicode.com/todos");
todoList = await todos.json();
};
const checkList = async () => {
await data();
let checking = "<ul>";
todoList.forEach((todo) => {
const username = userList.find((user) => user.id === todo.userId).username;
// console.log(username);
checking += "<ll>";
checking += "username :" + username + ", todo title : " + todo.title;
if (todo.completed) {
checking += '<input type = "checkbox" checked>';
} else {
checking += '<input type = "checkbox">';
}
checking += "</li><br>";
});
checking += "</ul>";
document.body.innerHTML = checking;
};
checkList();
시도 2 : 데이터를 가져오는것까지는 성공했는데 요소작성을 못했음
// todos 불러오기
const fetchTodos = () => {
return fetch('https://jsonplaceholder.typicode.com/todos')
.then((res) => res.json());
};
// users 불러오기
const fetchUsers = () => {
return fetch('https://jsonplaceholder.typicode.com/users')
.then((res) => res.json());
};
// todos, users 으로 우리가 사용할 todolist item 만들어주기
const todoList = async () => {
try{
const users = await fetchUsers();
const todos = await fetchTodos();
// console.log(users);
// console.log(todos);
const todoListItem = todos.map((todo) => {
const username = users.find((user) => user.id === todo.userId).username;
return {
username : username,
title : todo.title,
completed : todo.completed
};
});
console.log(todoListItem);
} catch (e) {
console.error(e);
}
};
todoList();
// 매핑된 데이터를 이용해서 element 그려주기
시도 3 : promise.all은 성공
// todos 불러오기 // users 불러오기
const fetchTodos = () => {
return fetch("https://jsonplaceholder.typicode.com/todos").then((res) =>
res.json()
);
};
const fetchUsers = () => {
return fetch("https://jsonplaceholder.typicode.com/users").then((res) =>
res.json()
);
};
// promise.all 써보기
const fetchMerge = (promise) => Promise.all(promise);
// todos, users 으로 우리가 사용할 todolist item 만들어주기
const todoList = async () => {
try {
const[users,todos] = await fetchMerge([fetchUsers(),fetchTodos()]);
// const users = await fetchUsers();
// const todos = await fetchTodos();
// console.log(users);
// console.log(todos);
const todoListItem = todos.map((todo) => {
const username = users.find((user) => user.id === todo.userId).username;
return {
username: username,
title: todo.title,
completed: todo.completed
};
});
console.log(todoListItem);
} catch (e) {
console.error(e);
}
};
todoList();
// 매핑된 데이터를 이용해서 element 그려주기