我想在angularjs服务(工厂)中创建一个startService函数。 我想startService函数检查它是否可以启动服务,如果不是,它将调用自己超时,而不是再次检查。
startService: function() {
if(!someComaprison) {
$timeout(this.startService, 5000);
return;
}
//starts service
},
但是在下一次启动时它会崩溃,因为这是未定义的。 如何在服务中进行这样的循环?使用控制器功能我没有问题吗?
答案 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个不同的问题,或者编辑你的第一个问题,而不是将问题作为答案发布。