fetchAPI 의사코드

2023. 1. 19. 20:59기타

 

const newsURL = 'http://localhost:4999/data/latestNews';
const weatherURL = 'http://localhost:4999/data/weather';

function getNewsAndWeather() {
  // 체이닝의 결과가 Promise 형태로 리턴되어야 합니다
  // fetch 두번 사용해야한다
  // 불러온 api의 결과값을 합쳐 새로운 객체로 리턴해야한다
  // promise all / async 사용 하지 않아야한다.
  const dailynews = {}
 return fetch(newsURL) // fetch도 프로미즈 객체를 리턴한다.
  .then(res => res.json()) // 프로미즈 객체 안에 리스폰에 접근해서 정보를 json으로 만들어준다.
  .then(newsjson => { //than으로 json을 체이닝을 통해 받아온다.
    dailynews.news = newsjson.data // 객체 dailynews의 프로퍼티 news에 받아온 정보의 data프로퍼티 안에 값을 할당한다.
    return fetch(weatherURL)
  })
  .then(res => res.json())// 프로미즈 객체 안에 리스폰에 접근해서 정보를 json으로 만들어준다.
  .then(weatherjson =>{//than으로 json을 체이닝을 통해 받아온다.
    dailynews.weather = weatherjson // 객체 dailynews의 프로퍼티 news에 받아온 정보를 값으로 할당한다.
    return dailynews;
  })
}

if (typeof window === 'undefined') {
  module.exports = {
    getNewsAndWeather
  }
}
async function getNewsAndWeatherAll() {
  // TODO: Promise.all을 이용해 작성합니다
  let dailynews = {} // 날씨와 뉴스를 합친 정보를 담을 객체
  let newsdata = fetch('http://localhost:4999/data/latestNews')
  .then(res => res.json()) // 뉴스정보를 받아와 json형태로 반환
  let weatherdata = fetch('http://localhost:4999/data/weather')
  .then(res => res.json())// 날씨정보를 받아와 json형태로 반환

  return Promise.all([
    newsdata, weatherdata]) // 프로미즈들을 동시에 실행해줌
  .then((news)=> { // 실행하여 가져 온 정보들을 then으로 받아온다.
    dailynews.news = news[0].data // news의 0번째 인덱스의  data프로퍼티 값을 dailynews.news에 할당한다.
    dailynews.weather = news[1] // news의 1번째 인덱스의값을 dailynews.weather에 할당한다.
    return dailynews // 객체를 리턴한다.
  })
}

if (typeof window === 'undefined') {
  module.exports = {
    getNewsAndWeatherAll
  }
}
async function getNewsAndWeatherAsync() {
  // TODO: async/await 키워드를 이용해 작성합니다
  let dailynews = {} // 날씨와 뉴스를 합친 정보를 담을 객체
  let newsdata =  await fetch('http://localhost:4999/data/latestNews') // await 으로 바로 json파일에서 정보를 꺼내온다.
  .then(res => res.json()) // 뉴스정보를 받아와 json형태로 변환
  dailynews.news = newsdata.data// json형태의 뉴스정보를 dailynews.weather로 할당
  let weatherdata = await fetch('http://localhost:4999/data/weather')// await 으로 바로 json파일에서 정보를 꺼내온다.
  .then(res => res.json())// 날씨정보를 받아와 json형태로 변환
  dailynews.weather = weatherdata // json형태의 날씨정보를 dailynews.weather로 할당
  return dailynews // 객체반환
}
if (typeof window === 'undefined') {
  module.exports = {
    getNewsAndWeatherAsync
  }
}
//프로미즈 객체안에는 리스폰스가있다.