AngularJS函数,使用$ q promise增加数字

时间:2016-01-20 15:56:17

标签: javascript angularjs q angular-promise

我知道这可能是一个容易回答的问题,但我无法理解它。我需要一个函数,将一个数字递增1并返回一个promise。

这是fiddle

失败的例子

var incrementingFn = function() {

  return $q(function(resolve,reject) {
    var n = 0;

    $q.resolve(function() {
      n += 1;
      return n;
    }()); 
    }
}


incrementingFn().then(function(res) {
  var num = res;
}

2 个答案:

答案 0 :(得分:0)

你在代码中做了许多不正确的事情。

这是他们的清单。

  1. 使用太旧的角度参考,请使用最新的角度参考。
  2. 您的控制器应绑定到您创建的模块。 Detail explanation here
  3. 在做出决定时,您错过了关闭结束括号}
  4. 数字声明应该在函数之外,如@charlietfl所说。
  5. <强>代码

    var myApp = angular.module('myApp', []);
    
    //myApp.directive('myDirective', function() {});
    //myApp.factory('myService', function() {});
    myApp.controller('MyCtrl', MyCtrl)
    
    function MyCtrl($scope, $q) {
      $scope.name = 'Superhero';
      var n = 0;
      var incrementingFn = function() {
    
        return $q(function(resolve, reject) {
    
    
          resolve(function() {
            n += 1;
            return n;
          }());
        })
      }
    
      incrementingFn().then(function(res) {
          $scope.num = res;
        }
      );
    }
    

    Working Fiddle

答案 1 :(得分:0)

您的代码中存在语法问题以及其他逻辑问题

尝试

 var n = 0;

  var incrementingFn = function() {
    return $q(function(resolve, reject) {
      n++;
      resolve(n);    
    });
  }

  incrementingFn().then(function(res) {
    $scope.num = res;
  });

一个要点是,如果您计划再次增加号码,则不希望每次都在函数内部将其声明为0,否则它将始终返回1

DEMO