如何在angularjs 1.2.0-rc.3上使用promise

时间:2013-10-18 14:17:03

标签: angularjs promise

1 个答案:

答案 0 :(得分:2)

您无法在HTML中代表{{random}},因为random是承诺。

添加监听器:

 $scope.random.then(function(result) {
    alert(result);
    }, function(error) {
        alert(error.message);
    });

这是修改后的 Plunker

所以控制器应该像:

angular.module("myApp", [])
.controller("myCtrl", function($scope, $q) {

  var deferred = $q.defer();
  setTimeout(function() {
    $scope.$apply(function() {
      deferred.resolve(Math.random());
    });
  }, 1000);

  $scope.random = deferred.promise;

   $scope.random.then(function(result) {
    $scope.randomNumber = result;
    }, function(error) {
        alert(error.message);
    });
});

HTML

 <body ng-app="myApp" ng-controller="myCtrl">
    <h1>Random Number: {{randomNumber}}!</h1>
 </body>
  

承诺代表未来价值,通常是未来结果   一个异步操作,并允许我们定义什么   一旦这个值可用,或者当一个值出现时,就会发生   发生错误。

作为旁注:

我会使用$timeout代替setTimeout$aplly

 var deferred = $q.defer();
  $timeout(function() {
   deferred.resolve(Math.random());
  }, 1000);

我建议你阅读有关承诺的POST。这可能有所帮助。