angularjs服务函数调用自身

时间:2014-05-29 08:22:28

标签: javascript angularjs cordova service

我想在angularjs服务(工厂)中创建一个startService函数。 我想startService函数检查它是否可以启动服务,如果不是,它将调用自己超时,而不是再次检查。

startService: function() {      
      if(!someComaprison) {
        $timeout(this.startService, 5000);
        return;
      }

      //starts service
    },

但是在下一次启动时它会崩溃,因为这是未定义的。 如何在服务中进行这样的循环?使用控制器功能我没有问题吗?

2 个答案:

答案 0 :(得分:0)

您还需要传递 context (在本例中为> this)。试试这样:

$timeout(this.startService.bind(this), 5000);

答案 1 :(得分:0)

为了保持正确的this上下文,您需要将函数绑定到此

$timeout(this.startService.bind(this), 5000);

或超时中执行的函数将不知道this引用的内容。

查看以下文章:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this

编辑:对于另一个问题:

var that = this;

this.startHttpRequest = function(userId) {
    var httpRequest = $http.post(somedata....);


    httpRequest.success(function(data){
      that.startHttpRequest(data.userId);
    });
  }

但是,不要问这样的2个不同的问题,或者编辑你的第一个问题,而不是将问题作为答案发布。