콘텐츠로 이동

2021 03 29

2021-03-29

Ajax

  • 비동기 방식으로 데이터를 주고받는 JS 기술 - 초기에는 XML 형식의 데이터 주고받음 - 현재는 JSON을 주고받는 것이 표준으로 자리잡음
  • 페이지 새로 고침 없이 서버에 요청하고, 응답을 받을 수 있음 - 이를 통해 서버로 부터 받은 데이터를 DOM을 활용하여 페이지 갱신해 줄 수 있음
  • 페이지의 일부만을 수정 가능케 하는 기술의 총칭!

Promise

  • 서버와의 통신: 얼마나 걸릴지 모름 - Promise를 만들어 해결해보자!
  • 미래의 어떤 시점에 결과를 제공한다는 약속! - 성공일수도! - 실패일수도! - 성공/실패 모르니까, 각각에 대응하는 메서드를 제공하자
  • Promise는 "비동기 작업을 전달받아 응답에 따라 두 가지 메서드 중 하나를 호출하는 객체!" - 비동기 작업 성공! -> then() - 비동기 작업 실패! -> catch()
new Promise(function(resolve, reject) {
  // ...
}).then(resolve()).catch(reject())

fetch

  • Ajax 기술의 복잡도를 낮춰 사용할 수 있도록 fetch 보급
  • Promise를 반환함 - 따라서, then() 메서드에 응답 처리하는 콜백함수 추가하기
  • HTTP GET 방식의 요청
    fetch('https://jsonplaceholder.typicode.com/posts/1')
      .then(data => {
        if (!data.ok) {
          throw new Error(data.status)
        }
        return data.json()
      })
      .then(post => {
        console.log(post.title)
      })
      .catch(error => {
        console.log(error)
      })
    
  • HTTP POST 방식의 요청
    const newPost = {
      title: 'jun',
      body: 'jun is cool boy',
      userId: '1'
    }
    
    const option = {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      },
      body: JSON.stringify(newPost)
    }
    
    fetch('https://jsonplaceholder.typicode.com/posts/1', option)
      .then(data => {
        if (!data.ok) {
          throw new Error(data.status)
        }
        return data.json()
      })
      .then(post => {
        console.log(post.title)
      })
      .catch(error => {
        console.log(error)
      })