본문 바로가기
Dev/Vue.js

[Vue.js] Hacker News - Async & Await를 이용한 비동기 처리

by dev_jsk 2020. 9. 25.
728x90
반응형

Async & Await

자바스크립트 비동기 처리 패턴의 최신 문법으로 Promise와 Callback에서 주는 단점을 해결하고 자바스크립트의 비동기적 사고 방식에서 벗어나 동기적(절차적)으로 코드를 작성하는 문법

 

형식

async function fetchData() {
  await getUserList();
}

예제

async function fetchData() {
  var list = await getUserList();
  console.log(list);
}

function getUserList() {
  return new Promise(function(resolve, reject) {
    var userList = ['user1', 'user2', 'user3'];
    resolve(userList);
  });
}

fetchData()를 호출하면 내부에서 getUserList()를 호출하고 실행이 완료된 Promise 객체를 반환한다. 따라서 fetchData()를 호출하면 userList의 배열이 출력된다.

 

결과

Hacker News에 적용하기

src/store/actions.jsFETCH_LIST에 async & await를 적용

import { fetchList } from "../api/index.js";

export default {
  // Promise
  // FETCH_LIST({ commit }, pageName) {
  //   return fetchList(pageName)
  //     .then(({ data }) => {
  //       commit("SET_LIST", data);
  //     })
  //     .catch((error) => {
  //       console.log(error);
  //     });
  // },
  // async
  // 어떠한 값을 return 해도 return 값은 Promise 형식이다.
  async FETCH_LIST({ commit }, pageName) {
    try {
      const response = await fetchList(pageName);
      commit("SET_LIST", response.data);
      return response;
    } catch (error) {
      console.log(error);
    }
  },
};

※ 기존 방식과 결과는 동일

728x90
반응형

댓글