javascript - Controller 内的变量未解析为由 Promise 解析的数据

标签 javascript angularjs

//服务内部PService

this.getPTypes = function(){
        var types = PTypesFactory.get({});
        return types.$promise.then(function(result)
        {
            console.log(result.groups);
            return result.groups;
        });
    }

// Controller 内部

$scope.groups = PService.getPTypes();

控制台日志显示正确获取的 REST 数据,但是当我这样做时

console.log($scope.groups);

我明白

Object {then: function, catch: function, finally: function}

这是 Promise API,而不是正确解析的数据。

最佳答案

问题在于您尝试像使用同步函数一样使用异步函数。

then 是一个返回 Promise 的方法。

当使用回调调用它时,回调不会立即调用,只有当响应从服务器返回时才调用。

你可以这样写:

服务

this.getPTypes = function(callback){
  PTypesFactory.get({}).then(callback);
}

Controller

PService.getPTypes(function(res){
  $scope.groups = res.data;
});

关于javascript - Controller 内的变量未解析为由 Promise 解析的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21313209/

相关文章:

JavaScript 与选项交互

javascript - JQuery 从字符串内部获取文本

javascript - javascript 中的 async/await 并发函数调用(链函数)

javascript - 如何从页面中的jquery调用angular js函数 Controller

javascript - 在 ng-if 变为真后访问 DOM 元素

AngularJS templateUrl 未在 Internet Explorer 7 中加载模板

angularjs - Angular 分组过滤器

javascript - AngularJS Bootstrap Tabset 选项卡之间的选项卡导航在 IE8 中不起作用

javascript - JQuery 点击功能不适用于父元素中的按钮,它有自己的点击功能

java - 通过 java 中的 websocket 与特定用户进行网络聊天