Javascript

SessionStorage๋ฅผ ์ด์šฉํ•ด ์บ์‹œ ๊ตฌํ˜„ํ•˜๊ธฐ

createElement 2022. 11. 23. 01:26

๐Ÿค” ์บ์‹œ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ์ด์œ 

ํŠน์ • ๊ฐ’์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ด๋‘๋ฉด ์ดํ›„์— ๊ทธ ํŠน์ • ๊ฐ’์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•  ๊ฒฝ์šฐ, ์š”์ฒญ์„ ๋ณด๋‚ด์ง€ ์•Š๊ณ  ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  ๋ถˆํ•„์š”ํ•œ ์š”์ฒญ์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ด์ ์ด ์žˆ๋‹ค.

 

๐Ÿ–ฑ๏ธ ๊ตฌํ˜„ ๋ฐฉ๋ฒ•

ํŠน์ • ๊ฐ’์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ SessionStorage์— ์ €์žฅํ•˜์—ฌ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. SessionStorage๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋‹ซํžˆ๊ธฐ ์ „๊นŒ์ง€ ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ์ง€๋œ๋‹ค. ๋งŒ์•ฝ ์˜๊ตฌ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด LocalStoage๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.


๊ตฌํ˜„์€ ์ •๋ง ๊ฐ„๋‹จํ•˜๋‹ค!!!

import { getItem, setItem } from "./storage.js";

const $root = document.querySelector(".root");
const $input = document.createElement("input");
$root.appendChild($input);

const cache = getItem("cache_dog", {});

$input.addEventListener("input", (e) => {
  const breed = e.target.value.trim();

  if (breed.length > 1) {
    fetchData(breed);
  }
});

const fetchData = async (breed) => {
  try {
    if (cache[breed]) { // cache์— ์ด๋ฏธ breed์— ํ•ด๋‹น๋˜๋Š” ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ
      console.log(cache[breed]);
    } else { // cache์— breed์— ํ•ด๋‹น๋˜๋Š” ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ
      const response = await fetch(
        `https://dog.ceo/api/breed/${breed}/images/random`
      );

      if (!response.ok) {
        throw new Error("API ์—๋Ÿฌ");
      }

      const dogData = await response.json();
      cache[breed] = dogData.message;
      
      setItem("cache_dog", cache); // sessionStorage์— ์ €์žฅ
      console.log(cache[breed]);
    }
  } catch (e) {
    console.error(e);
  }
};

 

 

1. cache์— ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ๋Š” cache์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.

    ์•„๋ž˜ ์‚ฌ์ง„์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ์ด๋ฏธ mix์˜ ๋ฐ์ดํ„ฐ๋Š” cache_dog์— ์ €์žฅ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ์š”์ฒญ์„ ๋ณด๋‚ด์ง€ ์•Š๋Š”๋‹ค.

 

 

2. ๋งŒ์•ฝ cache์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ๊ฐ’์— ๋Œ€ํ•ด ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ cache์— ์ €์žฅํ•œ๋‹ค.

    ํ•˜์ง€๋งŒ cache_dog์— ์—†๋Š” ๋ฐ์ดํ„ฐ์˜ ๊ฒฝ์šฐ ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.