Angularjs 函数服务返回未定义

Angularjs 函数服务返回未定义,angularjs,angularjs-directive,angularjs-scope,Angularjs,Angularjs Directive,Angularjs Scope,我在变量中存储一个布尔值以检查用户是否为管理员,在我调用服务的函数中,我可以接收结果值(true或false),但在变量vm.isAdmin中,我得到一个未定义的值 vm.isAdmin = accountType("admin"); function accountType(type){ UserService.isAccount(type).then( function (result) { console.log("result");

我在变量中存储一个布尔值以检查用户是否为管理员,在我调用服务的函数中,我可以接收结果值(true或false),但在变量vm.isAdmin中,我得到一个未定义的值

vm.isAdmin = accountType("admin");
function accountType(type){
    UserService.isAccount(type).then(
        function (result) {
           console.log("result");
           console.log(result);
           return result;
        }
    );
}

UserService.isAccount返回承诺,您可以通过在then方法中设置匿名函数来使用它,但您的主函数不同,accountType函数中使用的匿名函数被称为异步函数,因此结果将在函数accountType结束后很久。accountType函数也应该返回promise或使用回调函数

尝试这样做(回调函数):

用法示例:

   accountType("admin",function(){ 
   //code for yes  
   },function(){  
   // code for no
   });

UserService.isAccount返回承诺,您可以通过在then方法中设置匿名函数来使用它,但您的主函数不同,accountType函数中使用的匿名函数被称为异步函数,因此结果将在函数accountType结束后很久。accountType函数也应该返回promise或使用回调函数

尝试这样做(回调函数):

用法示例:

   accountType("admin",function(){ 
   //code for yes  
   },function(){  
   // code for no
   });

UserService.isAccount
似乎返回了一个承诺,因此您必须这样使用它:

UserService.isAccount('admin')
.then(function (result) {
        vm.isAdmin = result;
    });

因此,结果在可用时被分配。

UserService.isAccount
似乎返回一个承诺,因此您必须这样使用它:

UserService.isAccount('admin')
.then(function (result) {
        vm.isAdmin = result;
    });

因此,结果在可用时被赋值。

我已经做了,但仍然给我一个“c{$$state:Object}”,你永远不会得到布尔值,布尔值可以在函数中赋值,函数将在promise之后调用。Promise是异步的,您必须理解异步函数不会在代码中的行中调用,它会在相同的范围内运行一段时间。检查我的代码并尝试它。我已经做了,但仍然给我一个“c{$$state:Object}”,你永远不会得到布尔值,布尔值可以在函数中赋值,该函数将在promise之后调用。Promise是异步的,您必须理解异步函数不会在代码中的行中调用,它会在相同的范围内运行一段时间。检查我的代码并尝试它。