Javascript 登录后需要相互等待的多个axios调用,然后再将用户重定向到Vue.js上的仪表板[计时问题]

Javascript 登录后需要相互等待的多个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 })

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
    })
  }
}
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()适用于执行批处理调用,但没有排序功能。