【发布时间】:2015-04-10 06:37:53
【问题描述】:
我试图防止在我的代码中触发多个 http 请求。
我有类似的东西
在我的控制器中
//if use click, fire this method
var getItems = function() {
factory.makeRequest.then(function(data){
//do stuff with data...
})
}
在我的工厂
var factory = {};
factory.makeRequest = function(){
if($http.pendingRequests.length===0) {
return getData()
.then(function(data) {
//do stuff here
return data;
})
}
}
factory.getData = function() {
return $http.get('/project/item');
}
return factory;
如果进程正在进行,上面的代码将防止请求被多次触发。但是,如果我在承诺解决之前再次单击该按钮,我会得到Cannot read property of .then of 'undefined'。我知道这是因为 $http 请求没有返回任何内容,因为我有 $http.pendingRequests.length===0 条件。上面的代码给了我我需要的东西,但我不知道如何防止控制台日志中的错误。谁能帮我吗?非常感谢!
【问题讨论】:
-
所以你想检查 $http.pendingRequests!==undefined?
-
@ABOS 是的。我需要知道进程中的 http 请求何时进入。
标签: javascript angularjs xmlhttprequest