Tengo dos métodos de obtención de API. El primero es verificar si el usuario es un administrador. El segundo es llamar a todas las listas de usuarios.
Pero estoy teniendo dificultades para llamar primero; Siempre llama a todas las listas de usuarios antes de verificar si el usuario es administrador o no.
lo que hice fue
async mounted() { await this.getCurrentUser(); }y método para verificar si el usuario es administrador:
getCurrentUser(){ Common.getUser().then(data => { if(!data.admin){ this.isAdmin = false; } }); },método para obtener todos los usuarios:
paging: function (pageNumber) { vm.requestParam.page = pageNumber == undefined ? var param = Common.param(vm.requestParam); axios.get('/api/users?' + param).then(function (response) { /// } }) .catch(function (error) { console.log(error.response); }); },y los datos son:
data: { resources: {}, 'requestParam': { 'id': '', 'query': '', 'accessLevel': '', 'page': 1 },`El problema es que las cadenas de promesas están rotas, por lo que await no tiene efecto. Como regla general, una función que involucra promesas debe devolver una promesa que represente el final de su trabajo. Debería ser:
return Common.getCurrentUser()...y
return axios.get('/api/users?' + param)... nextTick basado en devolución de llamada puede resultar en una condición de carrera. En caso de que afecte a otros métodos, también debería ser una promesa:
await this.$nextTick(); vm.getResources(); ...