TIL_20.08.11 πŸƒπŸ½β€β™‚οΈπŸƒπŸ½β€β™‚οΈ

Doum KimΒ·2020λ…„ 8μ›” 11일
0

TIL

λͺ©λ‘ 보기
28/71
post-thumbnail

Codestates immersive course


μ΄λ¨Έμ‹œλΈŒ λ‹€μ„― 번째 μŠ€ν”„λ¦°νŠΈ Asynchronous & Promise

μ˜€λŠ˜μ€ Asynchronous & Promise μŠ€ν”„λ¦°νŠΈ λ§ˆμ§€λ§‰ 날이닀.

μ–΄μ œ κ³΅λΆ€ν•œ λ‚΄μš©μœΌλ‘œ 과제λ₯Ό μ§„ν–‰ν•˜λŠ”λ° μžˆμ–΄μ„œ 어렀움은 μ—†μ—ˆλ‹€.

μ–΄λ–»κ²Œ 보면 κ°€μž₯ μ–»μ–΄κ°€λŠ”κ²Œ λ§Žμ€ μŠ€ν”„λ¦°νŠΈμ˜€λ‹€.

callback -> promise -> async await 으둜 변경이 자유둭게 κ°€λŠ₯ν•΄μ‘Œλ‹€.

νŠΈμœ„ν‹€λŸ¬μ—μ„œ λ‹€λ€˜λ˜ λ‚΄μš©κ³Ό async await을 ν•©μ³μ„œ μœ μ €μ˜ 아이디λ₯Ό μž…λ ₯ν•˜λ©΄ μœ μ €μ˜ 정보가 λ‚˜μ˜€λŠ”

μ•„μ£Ό κ°„λ‹¨ν•œ 예제λ₯Ό λ§Œλ“€μ–΄λ΄€λ‹€.

였늘의 ν† μ΄λŠ” 문제λ₯Ό μ΅œλŒ€ν•œ μ΄ν•΄ν•˜κ³  μ½”λ“œλ₯Ό μž‘μ„±ν•˜λ©΄μ„œ 문제λ₯Ό ν’€μ§€μ•Šκ³  ν•΄κ²°λ°©μ•ˆμ„ 찾은 ν›„

μ½”λ“œλ‘œ λ³€ν™˜ν•˜μ—¬ 문제λ₯Ό ν•΄κ²°ν•˜λŠ” λ°©λ²•μœΌλ‘œ 진행을 ν–ˆλ‹€.

훨씬 μ½”λ“œλ₯Ό μž‘μ„±ν•˜κΈ° μ‰¬μ› μœΌλ©° μ•žμœΌλ‘œλŠ” 무쑰건 이 방식을 μ΄μš©ν•΄μ•Όκ² λ‹€.

index.html

<body>
  <ul class="user-list"></ul>
  <template class="user-list-item-template">
    <li class="user-list-item"></li>
  </template>
  <script src="./index.js"></script>
</body>

index.js

(() => {
  const URL = 'https://jsonplaceholder.typicode.com/users';
  const listTemplate = document.querySelector('.user-list-item-template');
  const userList = document.querySelector('ul.user-list');

  const printUserData = (userElem) => {
    userList.appendChild(userElem);
  };

  const makeElement = (userData) => {
    console.log(userData);
    const { id, username, name, email } = userData[0];
    const clone = document.importNode(listTemplate.content, true);
    const listItem = clone.querySelector('li');
    listItem.textContent = `id: ${id}, name: ${name}, username: ${username}, email: ${email}, `;
    printUserData(clone);
  };

  const fetchData = async (id) => {
    const res = await fetch(URL);
    const usersData = await res.json();
    const matchedIdUser = usersData.filter((data) => data.id === id);
    makeElement(matchedIdUser);
  };

  const getUserId = () => {
    let id = prompt('아이디λ₯Ό μž…λ ₯ν•˜μ„Έμš”');
    fetchData(Number(id));
  };

  getUserId();
})();

0개의 λŒ“κΈ€