AngularJS 使用 $q promise 递增数字的函数

AngularJS function that increments a number with $q promise

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

这里是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;
}

您在代码中做的事情有很多不正确的地方。

这是他们的名单。

  1. 使用太旧的angular参考,使用最新的。
  2. 您的控制器应该绑定到您创建的模块。
  3. 您在执行 resolve 时错过了关闭右括号 }
  4. 正如@charlietfl 所说,数字声明应该在函数之外。

代码

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

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

尝试

 var n = 0;

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

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

一个要点是,如果您打算再次递增数字,您不想每次都在函数内将其声明为 0,否则它将始终 return 1

DEMO