从promise中分配变量

时间:2017-11-21 14:09:45

标签: javascript angularjs

我试图将一个变量分配给控制器中的变量,该变量来自工厂的承诺,该承诺从URL中提取JSON数据。

webApp = angular.module("App", []);

webApp.factory("getData", function($http) {
  var promise;
  var getData = {
    async: function() {
      if ( !promise ) {
        promise = $http.get(window.location+"/json").then(function (response) {
        return response.data;
        });
      }
      return promise;
    }
  };
  return getData;
});

webApp.controller("View", function(getData, $scope) {

  $scope.m = {}

  getData.async().then(function(m) {
    $scope.m = m;
    if ($scope.m == m) {
      console.log(true);
    }
  });

  console.log($scope.m);


});

.then函数中,返回true - 但$scope.m始终返回为undefined。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

这是因为promises是异步方法。 这意味着您的async调用与console.log()行并行执行。因此,在代码的该阶段,不分配变量。

这将打印输出:

webApp.controller("View", function(getData, $scope) {
  $scope.m = {}

  getData.async().then(function(m) {
    $scope.m = m;
    console.log(m);
    console.log($scope.m);
  });
});