반응형
롱 API 호출이 완료되기 전에 경로를 변경하면 vuex 저장소를 덮어씁니다.
vuex 스토어에 긴 API 호출이 있습니다.완료되기 전에 루트를 변경하여 다른 페이지에서 보다 빠른 API 호출로 같은 액션을 디스패치하면 첫 번째 호출이 두 번째 호출을 덮어씁니다.동작은 다음과 같습니다.
async getData({ commit }, payload) {
try {
const params = {...};
const res = await axios.get(`/data`, {
params,
});
if (res.status === 200) {
commit("setData", res.data);
}
} catch (error) {
commit("setError", error.response);
}
},
이런 일이 일어나지 않도록 하는 방법이 있나요?
'마지막 종료' 비동기 호출이 상태를 덮어쓰지 않도록 하려면 오래된 액션을 모두 취소하여 완료하지 않도록 해야 합니다.
이 예에서는 를 사용하고 있기 때문에axios
, 가장 쉬운 옵션은,AbortController
.
액션으로 컨트롤러를axios
경유 메서드signal
파라미터:
const controller = new AbortController()
let result = axios.get('/foo/bar', { signal: controller.signal })
취소가 필요한 경우(즉, 새로운 액션을 호출하기 전에 전화하기만 하면 됩니다)
controller.abort()
언급URL : https://stackoverflow.com/questions/71765903/changing-route-before-long-api-call-finishes-overwrites-vuex-store
반응형
'programing' 카테고리의 다른 글
long 2147483647 + 1 = -2147483648은 왜 길까요? (0) | 2022.08.17 |
---|---|
데이터 제거 기능을 사용하여 중첩된 배열 '항목'의 데이터를 추가 및 삭제하는 방법 (0) | 2022.08.17 |
C: 문자 포인터와 배열의 차이점 (0) | 2022.08.17 |
C에서 상수/문자열을 연결하려면 어떻게 해야 합니까? (0) | 2022.08.17 |
"vue js dev tools" 베타 버전에서 변환 및 작업을 기록하는 방법은 무엇입니까? (0) | 2022.08.17 |