繁体   English   中英

在angularjs中使用promise

[英]using promise in angularjs

我是angularjs的新手,我正在学习angular的promise。 我做了一个简单的样本来了解诺言如何运作

<body ng-controller="sampleController">
  <div>{{one}}</div>
  <br/>
  <br/>
  <div>Status - {{two}}</div>
  <br/>
  <br/> 
  <div ng-click="callback()">click</div>
</body>

<script>
  function sampleController($scope, $q, $timeout) {
    $scope.one = "Hello World"
    $scope.two = "NA"

    $scope.callback = function() {

      $timeout(function() {
        $scope.one = "Good Evening"
      }, 2000);
    }

    change = function() {
      $scope.two = "Changed"
    }

    var defer = $q.defer()
    var promise = defer.promise;

    promise = promise.then($scope.callback()).then(change());
  }
</script>

JSBin: http//jsbin.com/foxacawa/1/edit

通过使用Promise,一旦Hello World更改为Good Evening,我尝试更改状态,但是我没有得到输出。 正确的方法是什么? 请建议

一旦延迟解决,将调用then()回调。 要解决延迟问题,只需使用defer.resolve() (或defer.reject()显示失败)

我认为这就是您要寻找的东西:

var defer = $q.defer()

$scope.callback = function(){ 

  $timeout(function() {
    $scope.one = "Good Evening";
    defer.resolve('changed');
  }, 2000);    
}

只需查看$ q的文档即可了解更多详细信息。

另外:与

promise = promise.then($scope.callback()).then(change());

您会立即调用$ scope.callback和change函数,而不是调用promise时。

尝试

promise = promise.then($scope.callback).then(change);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM