在我的情况下,如何进行http请求
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
条件。上面的代码给了我所需要的,但我不知道如何防止控制台日志中的错误。有人能帮我吗?非常感谢!
如果当前请求promise存在,下面将返回它,否则它将创建一个新请求并返回该promise。它将在成功时清除当前请求。
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;
相关文章:
- 在我的情况下,如何进行http请求
- AngularJS使用http进行promise处理
- http请求使用html而不是json进行响应
- 使用 HTTP 代理进行负载平衡
- 如何使用在 Javascript 中对 API 进行 HTTP 调用
- node.js:在for循环中进行http调用
- 如何在nodejs中的async.each中进行同步http调用
- 如何在node.js中使用promise进行同步http调用
- 当使用HTTP/2时,缩小和连接JS/CSS文件,以及使用精灵进行图像处理仍然可以提供性能优势
- 将并行和链式请求与$http.then()和$q.all()进行角度组合
- 如何使用 HttpBackend 进行$http
- 使用 NodeJS 的请求模块进行 HTTP 身份验证,返回未定义的正文
- 从javascript进行http调用时失败
- 如何使用nodejs连接到代理服务器并通过代理进行http.request
- 在不进行HTTP调用的情况下更新Ember Data中的特定记录
- 用JavaScript捕获正在进行HTTP请求的任何事件
- 在Javascript Express应用程序中进行http调用
- 使用Jasmine进行http post方法的Unittest用例
- 如何在AngularJS中进行http请求,以提供JSON数据格式
- 使用 javascript 进行 HTTP 登录 API 身份验证