0
私のコンポーネントの中から2つのアクションを呼び出す必要がありますが、最初のものが100%完了した後でなければなりません。Vue - 最初のものが終了した後にのみ非同期アクションを呼び出す
私はこれをしようとしているが、それは
mounted() {
this.$store.dispatch('coinModule/loadApiCoins')
.then(() => {
this.$store.dispatch('coinModule/loadUserCoins')
})
.catch(error => {
console.log(error)
});
},
機能しないと2つのアクションは、これらが他の方法で回避する必要がありますこれらの
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) })
}
コードは私のものと同じように見えます。どのように私は斧で約束を返すのですか?私は "それでは()"が約束だと思った...? –
私の悪い。私はちょうど何かの前に "リターン"を追加したのを見た。そうですか?私は非常に混乱しています。 –
右。つまり、 'promcheise = this。$ store.dispatch( 'coinModule/loadApiCoins')'のように 'dispatch'呼び出しの戻り値を' mounted'フックに保存したとします。あなたのコードでは、 'loadApiCoins'アクションは何も返さないので、' promise'は 'undefined'になり、' promise.then(()=> {}) 'はエラーになります。それで '$ store.dispatch( 'coinModule/loadApiCoins')、then(()=> {})'は動作しません。結果のディスパッチコールの値は 'undefined 'です。 'Vue.axios'呼び出しから得られた' Promise'を明示的に返す必要があります。 – thanksd