programing

vuex에서 약속을 중첩하는 이유는 무엇입니까?

powerit 2023. 6. 17. 09:44
반응형

vuex에서 약속을 중첩하는 이유는 무엇입니까?

나는 유지합니다.vue나의 전 프로그래머의 코드.

나는 그의 코드에서 이 코드를 찾았습니다.vuex모듈.

import axios from "axios";
import qs from "qs";
import httpi from "../httpInstance";  // this is just a wrapper for axios

const getPromise = (context, url) => {
  return new Promise((resolve, reject) => {
    httpi.get(url).then(
      (response) => {
        resolve(response);
      },
      (error) => {
        reject(error);
      }
    );
  });
};

// same repeated for 'put', 'post' etc...

저는 그가 왜 이런 식으로 약속을 했는지 궁금합니다.

ACTIONS그는 이 래퍼를 사용하여 아래와 같이 백엔드 API를 호출합니다.

const actions = {
  [ACT_GET_ALL_RULESOURCE]: function (context) {
    return getPromise(context, `${APIURLPREFIX}/polapi/api/rulesource`);
  },

그는 이것으로 무엇을 성취하려고 했습니까?

나는 악시오스 이후로 너무 혼란스럽습니다.httpi) 그 자체가 이미 약속입니다.여기서 요점은 무엇입니까?

**편집

InVue 구성 요소methodss, 그는 아래와 같은 동작을 사용합니다.

getAllRulesource() {
  this.$store.dispatch(`rules/${ACT_GET_ALL_RULESOURCE}`)
    .then((res) => {
      this.rulesourceList = res.data;
    })
    .catch((err) => {
      this.msg = "Cannot GET rulesource";
    })
}

이전 개발자는 약속을 충분히 이해하지 못했습니다.는 것으로 보이기 때문에httpi약속을 반환합니다(OP 코드 호출).then그 위에) 기능getPromise...로 고쳐 쓸 수 있고 또 고쳐 써야 합니다.

const getPromise = (context, url) => {
  return httpi.get(url);
};

또는 완전히 제거되었습니다.전화를 걸 사람은 그냥...

httpi.get('http...').then(response => {
  console.log(response);
}).catch(error => {
  console.log(error);
})

다음과 같이 선언된 함수 내부async보다 현대적인 발신자 구문은...

try {
  const response = await httpi.get('http...');
  console.log(response);
} catch(error) {
  console.log(error);
}

언급URL : https://stackoverflow.com/questions/71760230/nesting-promises-in-vuex-why

반응형