Я пытаюсь получить некоторые важные вещи, такие как: companyid,employeeid
и т. Д. С каждым запросом, который пользователь делает. Так что это должно быть получено до все остальное сделано.Угловое обещание не работает
После этого пользователь получает информацию, основанную на его компании, которую он устанавливает с каждым запросом (get/company/{companyid}
).
Проблема, которая у меня есть, заключается в том, что ответ на получение companyid принимает длинные и угловые уже пытается сделать запрос (get/company/{companyid}
), очевидно, что нет companyid
.
Я попытался исправить это обещание, но оно не работает.
Здесь я пытаюсь получить какую-то важную информацию о пользователе (что я делаю с каждым запросом):
Service
(function() {
angular.module('employeeApp')
.service('authenticationservice', authenticationservice);
function authenticationservice($http,$location,authenticationFactory,$q,GLOBALS,$cookies) {
this.validateUser = function() {
var vm = this;
vm.deferred = $q.defer();
data = {"api_token": api_token};
return $http.post(GLOBALS.url+'show/employee/' + $cookies.get('employeeid'),data)
.success(function(response)
{
vm.deferred.resolve(response);
})
.error(function(err,response)
{
vm.deferred.reject(err);
});
return vm.deferred.promise;
}
}
})();
Маршруты файл (В моих маршрутах файла я использую authenticationservice
, чтобы установить все важные переменные пользователей.)
employeeAppModule.run([
'authenticationservice',
'constants',
function(authenticationservice,constants) {
authenticationservice.validateUser()
.then(function(response)
{
constants.companyid = response.result.Employee;
constants.role = response.result.Role;
constants.name = response.result.FirstName;
console.log('test');
},
function(response){
console.log('error');
});
}
]);
Таким образом, проблема в том, что пользовательская информация установлена на поздний, а угловой уже идет на мой homeController, где он использует companyId, который еще не установлен.
Thankyou
'$ http' уже возвращает обещание, которое вы могли бы просто вернуться. Почему вы пытаетесь обернуть его в '$ q'? – migg
'.success' устарел. См. Docs https://docs.angularjs.org/api/ng/service/$http#deprecation-notice – user2950720
Вам необходимо решить обещание перед его возвратом: vm.deferred.resolve(); –