vue执行顺序问题, 请教各位大佬
发布于 5 年前 作者 YXxy1002 6057 次浏览 来自 问答
粉丝福利 : 关注VUE中文社区公众号,回复视频领取粉丝福利

在router.beforeEach中有一个store.dispatch(‘GenerateRoutes’)

      return new Promise(resolve => {
        const loadRolesAsyncRoutes = loadRoles(asyncRoutes)
        let accessedRoutes
        if (roles.roles.includes('admin')) {
          accessedRoutes = loadRolesAsyncRoutes
        } else {
          accessedRoutes = filterAsyncRoutes(loadRolesAsyncRoutes, roles.roles)
        }
        commit('SET_ROUTES', accessedRoutes)
        resolve(accessedRoutes)
      })
    }
	
	function loadRoles(asyncRoutes) {
    asyncRoutes.forEach(item => {
      if (item.children) {
        loadRoles(item.children)
      } else {
        if (item.meta) {
          if (!item.meta.roles) { // 需要挂载角色
            getRoleByMenu({ menuName: item.name }).then(response => {
              debugger
              item.meta.roles = response.data
            })
          }
        }
      }
    })
    return asyncRoutes
    }

在loadRolesAsyncRoutes中loadRoles调用后台api获取角色, 为什么GenerateRoutes执行完毕后才会执行loadRoles?

回到顶部