Vue Js 和链接动作和承诺
VueJs and chaining actions and promisses
在我的组件上,我有 2 个 mounted 操作,它们自己会从后端获取数据,并且每个操作还需要调用 mutations。
问题是第二次突变取决于第一次调用的结果
我需要确保是这种情况,目前有时第二次通话会在第一次通话之前结束。
组件
methods: {
...mapActions([
'fetchTypesOne',
'fetchTypesTwo'
])
},
mounted() {
this.fetchTypesOne()
.then(this.fetchTypesTwo())
.catch(errors => console.log(errors));
}
还有我的店
actions: {
fetchTypesOne({commit}) {
return axios.get('url')
.then(response => {
commit('MUTATION_ONE', response.data)
})
},
fetchTypesTwo({commit}) {
return axios.get('url2')
.then(response => {
commit('MUTATION2', response.data);
})
}
}
当你这样做时
.then(someFunction())
函数 someFunction()
立即执行,它应该是 return 一个函数。并且 returned 函数将在 promise 完成后执行。尝试做
then(someFunction)
没有尾随括号或
then(() => someFunction())
.
另外,我认为您不应该这样调用存储函数。至少那不是我在文档中看到的方式:https://vuex.vuejs.org/guide/actions.html#composing-actions
在我的组件上,我有 2 个 mounted 操作,它们自己会从后端获取数据,并且每个操作还需要调用 mutations。 问题是第二次突变取决于第一次调用的结果 我需要确保是这种情况,目前有时第二次通话会在第一次通话之前结束。
组件
methods: {
...mapActions([
'fetchTypesOne',
'fetchTypesTwo'
])
},
mounted() {
this.fetchTypesOne()
.then(this.fetchTypesTwo())
.catch(errors => console.log(errors));
}
还有我的店
actions: {
fetchTypesOne({commit}) {
return axios.get('url')
.then(response => {
commit('MUTATION_ONE', response.data)
})
},
fetchTypesTwo({commit}) {
return axios.get('url2')
.then(response => {
commit('MUTATION2', response.data);
})
}
}
当你这样做时
.then(someFunction())
函数 someFunction()
立即执行,它应该是 return 一个函数。并且 returned 函数将在 promise 完成后执行。尝试做
then(someFunction)
没有尾随括号或
then(() => someFunction())
.
另外,我认为您不应该这样调用存储函数。至少那不是我在文档中看到的方式:https://vuex.vuejs.org/guide/actions.html#composing-actions