我正在编写一个返回函数但该函数没有返回值的服务。这是代码:
function getUser() {
var Users = $resource('/api/users',{},{query: {method: 'get', isArray: true}});
return Users.query({username:localStorage.getItem("token")}).$promise
}
function userrole() {
var userrole='';
var tmp=getUser();
tmp.then(function(user){
var userrole= user[0].role;
console.log('The role is '+user[0].role);
userrole=user[0].role;
return userrole;
});
console.log('@ the end of userrole');
}
不返回的功能是userrole
。我相信这是因为异步问题。我怎样才能解决这个问题?
答案 0 :(得分:1)
不确定你想要实现什么但只是回归
return tmp.then(...
然后您就可以从其他地方拨打userrole().then((role) => ... )
了。除了那个修复你的缩进。
答案 1 :(得分:1)
如果您在AngularJS(以及所有Javascript)中使用异步方法,则需要始终在上述函数中使用它。
例如:
function getUser() {
var token = localStorage.getItem('token');
var Users = $resource('/api/users', {}, {
query: {method: 'get', isArray: true}
});
return Users.query({username: token}).$promise;
}
function getUserRole() {
return $q(function(resolve, reject) {
getUser()
.then(function(user){
resolve(user[0].role);
})
.catch(reject);
});
}
getUserRole().then(function (userRole) {
console.log('The role is ' + userRole);
});