[英]How to make http request in my case
我试图防止在我的代码中触发多个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
条件。 上面的代码为我提供了所需的信息,但我不知道如何防止控制台日志中的错误。 谁能帮我吗? 非常感谢!
以下命令将返回当前请求的承诺(如果存在),否则将创建一个新请求并返回该承诺。 它将成功清除当前请求。
var factory = {};
factory._currentRequest = null;
factory.makeRequest = function(){
if(!factory._currentRequest) {
factory._currentRequest = factory.getData()
.then(function(data) {
//do stuff here
factory._currentRequest = null;
return data;
})
}
return factory._currentRequest
}
factory.getData = function() {
return $http.get('/project/item');
}
return factory;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.