0
두 번째 작업은 내 구성 요소에서 호출해야하지만 두 번째 작업은 첫 번째 작업이 100 % 완료된 후에 시작해야합니다.Vue - 첫 번째 작업이 완료된 후에 만 비동기 작업을 호출하십시오.
나는이 노력하고있어하지만
mounted() {
this.$store.dispatch('coinModule/loadApiCoins')
.then(() => {
this.$store.dispatch('coinModule/loadUserCoins')
})
.catch(error => {
console.log(error)
});
},
작동하지 않고이 작업은이
loadApiCoins({ commit, dispatch, rootGetters }) {
Vue.axios({
method: 'get',
url: 'https://api.coinmarketcap.com/v1/ticker/',
transformRequest: [(data, headers) => {
delete headers.common.Authorization
return data
}]
})
.then(response => { commit('SET_API_COINS', response.data) })
.catch(error => { console.log(error) })
},
loadUserCoins({ commit, dispatch, rootGetters }) {
Vue.axios.get('http://127.0.0.1:8000/api/coins/')
.then(response => {
commit('SET_USER_COINS', response.data)
commit('SET_USER_PORTFOLIO_OVERVIEW')
})
.catch(error => { console.log(error) })
}
다음은 다른 방법으로 주위해야합니다. Screen of my network tab
코드는 내 것과 같습니다. 나는 액시 오스로 약속을 어떻게 되풀이합니까? 나는. "()"이 약속이라고 생각했다. ...? –
제 잘못입니다. 방금 전에 "반환"을 추가 한 것을 보았습니다. 그래서 그게 다야? 나는 매우 혼란 스럽다. –
오른쪽. 그래서'dispatch' 호출의 반환 값을'let promise = this. $ store.dispatch ('coinModule/loadApiCoins')'와 같이'mounted' hook에 저장했다고 가정 해 봅시다. 당신의 코드에서,'loadApiCoins' 액션은 아무것도 반환하지 않으므로'promise'는'undefined'가되고'promise.then (() => {})'는 에러가됩니다. 이것이 $ store.dispatch ('coinModule/loadApiCoins'), then (() => {})'이 작동하지 않는 이유입니다. 디스패치 호출의 결과 값은'undefined '입니다. 'Vue.axios' 호출에서 결과'Promise'를 명시 적으로 리턴해야합니다. – thanksd