js 函数调用返回值?

问题如下

<input type="text" ng-model="roleName" bg-blur="checkRole(roleName)">
var isCheck = false;
function checkName(roleName) {
    $http({
        url: 'http://...',
        type: 'post'        
    }).then(function(res){
        isCheck = res.data[0] == 0 ? true : false;
    }, function(err){
        //
    }).then(
        return isCheck;
    );    
}

$scope.checkRole = function (roleName) {
    if(checkName(roleName)) {
       /// 
    }
}

为什么这里 if(checkName(roleName))条件里面判断是 undefined,求原因?

阅读 4.1k
3 个回答

js是异步执行的。
需要转化为同步。

$scope.checkRole = function (roleName) {

var a = checkName(roleName);
if(a) {
   /// 
}

}

checkName方法中有异步, 所以当你调用的时候它还没有返回给你 你要的$http后接受到的数据, 在方法里面没有别的return 所以异步还没有return时 则方法默认为返回undefined.
你想要这种功能的话 推荐你用async await

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题