适应我的角度工厂返回的承诺

时间:2018-02-22 11:52:43

标签: angularjs

我的getData工厂正在返回.json文件中的人物对象列表。

.factory('people', ['$q', function($q) {
    function getData() {
        var deferred = $q.defer();            
        if (event.type == 'exception') { 
            //deferred.reject(result);
        } else {
            deferred.resolve(require('../../../mocks/people.json'));
        }
        return deferred.promise;
    }

    var that = {
        getData: getData
    };        
    return that;
}]);

在我的组件中,我在浏览器中将其输出到控制台,因为您可以看到我必须深入了解Promise以查找值。

enter image description here

我错过了工厂的一步吗?我想只返回我的json文件中包含的数据,如果可能的话,我想避免像在我的组件中做console.log(Promise.$$state.value)这样的事情。

我正在返回有角度的Promise,我是否需要以某种方式调整它才能看到数据?

1 个答案:

答案 0 :(得分:1)

你需要解决你的承诺:

var myApp = angular.module('myApp', []);

myApp.factory('people', ['$q', '$timeout', function($q, $timeout) {
  return that = {
    getData: function getData() {
      var deferred = $q.defer();            
      if (event.type == 'exception') { 
        //deferred.reject(result);
      } else {
        $timeout(function () {
          deferred.resolve({
            'some': 'Data'
          });
        }, 500);
      }
      return deferred.promise;
    }
  };
}]);

myApp.controller('MyCtrl', function(people) {
  people.getData().then((result) => {
    console.log(result)
  })
});

<强>&GT; Demo fiddle