javascript - angularjs 应用程序中的异步函数

标签 javascript angularjs

<分区>

我正在编写一个返回函数的服务,但该函数不返回值。这是代码:

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。我相信这是因为异步问题。我该如何解决这个问题?

最佳答案

如果您在 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);
});

关于javascript - angularjs 应用程序中的异步函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40963305/

相关文章:

javascript - 通过 Angular JS 发布多个数组数据

php 中的 Javascript 字符串不起作用

javascript - chrome.webstore.install 调用两个回调?为什么?

javascript - 在没有浏览器开发工具的情况下检查 html 元素?

javascript - 如何在 AngularJs 中按日期范围搜索

AngularJS 基于数组属性的过滤器列表

javascript - 用部分 View 替换主视图的内容

javascript - 我如何触发自动点击功能(每15秒)

javascript - 在 Restangular 中使用完整的 URL

javascript - AngularJS $timeout 在 for 循环中生成错误的值