首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何发出多个http请求?

如何发出多个http请求?
EN

Stack Overflow用户
提问于 2015-05-07 20:29:15
回答 1查看 675关注 0票数 0

我在父控制器和子控制器中有一个HTTP请求:

父控制器

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//Product is a $resource object that return http request as a promise.
Product.getItem()
   .then(function(items) {
      $scope.items = items
      //do something in the parent controller.
})

子控制器

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Product.getItem()
   .then(function(items) {          
      $scope.items = items
      //do something in the child controller
})

产品工厂

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
angular.module('testApp').factory('Product', function($http,$q) {
    var service = {}
    service.getItem = function() {
        return http.$get('api/url');
    }
    return service; 
})

子控制器是启动时,我在某些页面。问题是,当我启动这些页面时,代码会向api/url发出双重的http请求,因为父控制器和子控制器都会发出请求。虽然我的应用程序仍然有效,但我想知道是否有更好的方法来解决它。谢谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-07 21:33:54

编辑:--我研究了一下菲尔的评论,修正了(重写)我的例子。底部的柱塞反映了这些变化。以下是更新的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
app.controller('MainCtrl', function($scope, getStore) {
  getStore.get().then(function(data) {
    $scope.data = data
  })
});
app.controller('ChildCtrl', function($scope, $timeout, getStore) {
  $timeout(function() {
    getStore.get().then(function(data) {
      $scope.test = data
    })
  },3000)

});

app.factory('getStore', function($http, $q) {
  var self = this;
  var data;
  return {
    get: function() {
      if (data) {
        console.log(data);
        console.log('already got data')
        return $q.when(data)
      } else {
        data = $http.get('test.json')
        .then(function(response) {
          console.log('fetched data')
          return response.data;
        })
        return data
      }
    }
  }
})

这里有一个解决方案--将您的$http.get分离到一个工厂,并将值存储在那里。工厂是单机,所以两个控制器都可以访问和检查数据。

联署材料:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
app.controller('MainCtrl', function($scope, getStore) {
  $scope.data = getStore.get()
});
app.controller('ChildCtrl', function($scope, $timeout, getStore) {
  $timeout(function() {
    $scope.data = getStore.get()
    var check = getStore.checkData();
    console.log('Data in store: ' + angular.toJson(check));

  },1000)
  $scope.getData = function() {
    console.log(getStore.get());
  }
});

app.factory('getStore', function($http) {
  var self = this;
  return {
    data: undefined,
    get: function() {
      if (self.data) {
        console.log('already got data')
        return self.data
      } else {
        $http.get('test.json')
        .success(function(data) {
          console.log('no data found');
          self.data = data;
          console.log(self.data);
          return self.data;
        })
      }
    }
  }
})

它只是运行一个检查,看看该值是否已经存储,然后返回它如果是,如果不是,它得到,存储,并返回它。

柱塞

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30115767

复制
相关文章
React技巧之发出http请求
原文链接:https://bobbyhadz.com/blog/react-send-request-on-click[1]
chuckQu
2022/08/19
7740
React技巧之发出http请求
如何在原生Node.js中发出HTTP请求
本文翻译自How to make HTTP Requests in native Node.js
ccf19881030
2020/10/29
4.5K0
RxJS 处理多个Http请求
有时候进入某个页面时,我们需要从多个 API 获取数据然后进行页面显示。管理多个异步数据请求会比较困难,但我们可以借助 Angular Http 服务和 RxJS 库提供的功能来实现上述的功能。处理多个请求有多种方式,使用串行或并行的方式。
阿宝哥
2019/11/05
5.8K0
HttpRunner3的HTTP请求是怎么发出去的
它继承了pydantic.BaseModel,是用来做数据验证的,比如这里的url指定了Url类型,如果传一个str类型,就会校验失败。简而言之,这是给代码规范用的,没有实际的业务功能。
dongfanger
2022/05/09
3010
HttpRunner3的HTTP请求是怎么发出去的
在类TestCaseBasic的内部定义了teststeps列表,由多个Step类的实例对象组成。
python亦希
2022/01/26
3340
在Node.js中发出HTTP请求的7种方法
本文翻译自7 Ways to Make HTTP Requests in Node.js
ccf19881030
2020/10/29
27.1K0
Angular 使用 RxJS 优化处理多个Http请求
注意:上面的this.http.get... 处理HTTP最好放到单独的Service文件中,再注入到Component。这里为了演示没有这么做。
mafeifan
2019/03/15
4.2K0
PythonWebServer如何同时处理多个请求
源于知乎上一个问题:https://www.zhihu.com/question/56472691/answer/293292349
the5fire
2019/03/01
1.9K0
iOS网络--HTTP请求HTTP请求
本文首发于我的个人博客:『不羁阁』 https://bujige.net 文章链接:https://bujige.net/blog/iOS-HTTP-request.html HTTP请求 1.NSURLConnectiong 1.同步GET请求 // 1.创建请求路径(url) NSURL *url = [NSURL URLWithString:@""]; // 2.通过请求路径(url)创建请求对象(request) NSURLRequest *request = [NSUR
程序员充电站
2018/05/31
2K0
Ngnix如何处理http请求
nginx首先确定哪个服务器应处理该请求。让我们从一个简单的配置开始,其中所有三个虚拟服务器都在端口*:80上侦听:
星哥玩云
2022/08/08
9480
java如何发送http请求呢?
以下是粉丝答题过程了,希望大家可以动动小指头给个文件调查,本人现在也是非常忙,马上就要毕业了,在忙毕业的事情,所以更文不是非常勤快,也希望大家理解。----
java后端指南
2021/05/13
1.4K0
在 Flutter 中发出 HTTP 请求的最佳库(2022 年)【Flutter专题31】
本文将向您介绍最好的开源软件包列表,这些软件包可以帮助我们在 Flutter 应用程序中发出 HTTP 请求。事不宜迟,让我们探索重要的事情。
徐建国
2022/03/30
2.9K0
如何优雅记录 HTTP 请求/ 响应数据?
来源:https://urlify.cn/fuE73u 经常会遇到需要处理 http 请求以及响应 body 的场景。 而这里比较大的一个问题是 servlet的 requestBody 或 responseBody 流一旦被读取了就无法二次读取了。 针对这个问题,Spring 本身提供了解决方案,即: ContentCachingRequestWrapper ContentCachingResponseWrapper。 我们编写一个过滤器: public abstract class HttpBodyRe
程序猿DD
2022/09/08
8210
axios 是如何封装 HTTP 请求的
前端开发中,经常会遇到发送异步请求的场景。一个功能齐全的 HTTP 请求库可以大大降低我们的开发成本,提高开发效率。
coder_koala
2020/03/03
1.9K0
axios 是如何封装 HTTP 请求的
如何优雅记录 http 请求/ 响应数据?
作者:fredalxin 地址:https://fredal.xin/http-body-recorder
Java技术栈
2021/04/22
1.2K0
如何使用HRSDT检测HTTP请求走私
 HTTP请求走私检测工具介绍  HTTP请求走私是一种严重的安全漏洞,攻击者可以利用恶意HTTP请求来绕过安全控制措施并获得未经授权的访问权,然后在目标服务器上执行恶意操作。这款工具的主要目的就是为了帮助广大研究人员在给定的主机上检测HTTP请求走私漏洞。  技术细节  该工具基于Python语言开发,因此我们需要在本地设备上安装并配置好Python 3.x环境。该工具接受的输入参数为一个URL地址,或在文本中提供URL列表作为输入。该工具实现了HRS楼哦对那个检测技术,并且内置的Payload提供了37
FB客服
2023/03/30
1K0
如何使用HRSDT检测HTTP请求走私
axios 是如何封装 HTTP 请求的
前端开发中,经常会遇到发送异步请求的场景。一个功能齐全的 HTTP 请求库可以大大降低我们的开发成本,提高开发效率。
ConardLi
2019/10/14
2K0
axios 是如何封装 HTTP 请求的
测试中如何处理 Http 请求?
不知道大家平时写单测时是怎么处理 网络请求 的,可能有的人会说:“把请求函数 Mock ,返回 Mock 结果就行了呀”。
写代码的海怪
2022/08/31
1.3K0
axios 是如何封装 HTTP 请求的
前端开发中,经常会遇到发送异步请求的场景。一个功能齐全的 HTTP 请求库可以大大降低我们的开发成本,提高开发效率。
青梅煮码
2023/01/12
1.1K0
点击加载更多

相似问题

并行发出多个http请求

115

异步发出多个HTTP请求

84

异步发出多个http请求

30

熊猫发出多个HTTP请求

15

如何发出多个http调用请求(Nodejs )

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文