Javascript 登录后需要相互等待的多个axios调用,然后再将用户重定向到Vue.js上的仪表板[计时问题]
Login.vueJavascript 登录后需要相互等待的多个axios调用,然后再将用户重定向到Vue.js上的仪表板[计时问题],javascript,vue.js,axios,vuex,Javascript,Vue.js,Axios,Vuex,Login.vue methods: { loginUser() { this.$store.dispatch("auth/loginUser", { email: this.email, password: this.password }) .then(() => { // Login ok, redirect user to dashboard }) .catch(() => { // Show error })
methods: {
loginUser() {
this.$store.dispatch("auth/loginUser", { email: this.email, password: this.password })
.then(() => {
// Login ok, redirect user to dashboard
})
.catch(() => {
// Show error
})
}
}
Auth.js
actions: {
async loginUser ({dispatch}, {email, password}) {
return axios.post(url, {email, password})
.then(response => {
dispatch('otherAction');
})
.catch(response => {
})
},
async otherAction ({ dispatch, commit }) {
// Do other stuff
}
}
我使用Vuex和操作来执行API调用。在将用户重定向到仪表板之前,我需要等待otherAction调度。
问题是我不能在通话中使用wait。auth.js中的axios.post基本上检查用户的凭据。之后,我需要再打几个电话,以获得所有必要的数据显示。目前,用户被重定向到dashboard,但我在dashboard上看到了错误,因为它不会等到“获取用户的额外数据”调用完成后才能获取所需的数据。问题是时间问题
我的思维方式可能是完全错误的。如何使其工作?执行另一个操作,该操作将分派所有其他操作并将返回的承诺存储在一个数组中,然后使用承诺。all()执行另一个操作,该操作将分派所有其他操作并将返回的承诺存储在一个数组中,然后使用承诺。all()是否最终将返回“额外数据”?为时已晚?或者根本就没有?它回来了,但有时有点晚了。登录呼叫也可能会延迟,具体取决于网络。我只是不想确保它总是按顺序运行。创建
data.user
以存储来自loginUser()的响应。然后创建一个watch{user(u){“dispatch otherAction”}
然后将来自其他操作的响应存储在类似data.userDetails
的内容中,如果需要,watch{userDetails(d){this.$emit('login',{user:this.user,details:this.userDetails}}
ah,emit
可能不适合vuex结构。但是一般的想法是创建状态数据来存储api响应数据,然后仅在监视该数据时才做出反应最终返回的是“额外数据”吗?太晚了?还是根本不返回?它正在返回,但有时有点晚。登录调用也可能会延迟,具体取决于n网络。我只是不想确保它总是按顺序运行。创建data.user
来存储来自loginUser()的响应。然后创建一个watch{user(u){“dispatch otherAction”}
然后将来自其他操作的响应存储在类似data.userDetails
的东西中,如果需要,watch{userDetails(d){this.$emit('login',{user:this.user,details:this.userDetails}}
ah,emit
可能不适合vuex构造。但是一般的想法是创建状态数据来存放api响应数据,然后仅在数据被监视时才进行反应。我尝试了它,但问题是第一次调用和第二次调用之间存在关系。Promise.all()适用于执行批处理调用,但没有排序功能。我尝试过,但问题是第一次调用和第二次调用之间存在关系。Promise.all()适用于执行批处理调用,但没有排序功能。