【问题标题】:angular 2 http get request getting called twice, when the size of data is large当数据量很大时,angular 2 http get 请求被调用两次
【发布时间】:2018-12-11 08:08:39
【问题描述】:

我正在尝试使用 angular http get 请求获取一个月的历史数据。我使用 angular 5,服务器在节点 js 中,db 是 mongodb。 第一次单击按钮时,它会点击服务器,控制台会打印在服务器上。 2 分钟后再次服务器控制台,因为 ui 命中服务器,但 ui 没有调用服务器。 1分钟后,服务器显示发送成功响应,但ui控制台显示错误-“连接被拒绝”。我尝试使用可观察的共享来解决它。但它没有用 这是我的服务。

getReports(params): Observable<number>{
        let headers = new Headers({ 'Content-Type': 'application/json' });
        let options = new RequestOptions({ headers: headers });
        return this.http.get(url, options)
       .map((res: Response) => res.json())
       .catch(this.handleError)}

【问题讨论】:

  • 任何建议都会有很大帮助。
  • 你的标签上写着 angularjs,但这不是 angularjs……它是 angular
  • 您必须增加响应时间。默认情况下,如果在一定时间后没有收到响应,每种技术都会再次调用请求。
  • 感谢@RatanUdayKumar 的回答。我怎样才能增加角度的响应时间
  • 更新我的答案

标签: node.js angular mongodb rest api


【解决方案1】:

尝试如下

return this.http.get(url, options)
    .timeout(3000, new Error('timeout exceeded'))
    .map((res: Response) => res.json())
    .subscribe(
        data => this.data = data,
        error => console.debug('ERROR', error),
        () => console.log('END')
      );
    .catch(this.handleError)}

使用超时是可能的。 3000 表示 3 秒或 3000 毫秒

【讨论】:

  • 我更新了我的答案@RatanUdayKumar。我给响应时间为 120000 即。 2分钟。但我仍然可以看到 2 分钟后再次调用服务器。
  • 每个 api 在客户端的角度会有 2 个请求,但服务器只会收到 1 个请求
  • 2 次服务器收到请求。
  • 服务器发送响应需要多长时间
  • 一旦我发送请求,我可以在控制台中看到像按日期范围获取一样,2 分钟后再次出现相同的控制台。 1 分钟后,它显示已发送成功响应。但到那时浏览器显示错误-“连接被拒绝”或连接超时
猜你喜欢
  • 2017-04-24
  • 1970-01-01
  • 2018-12-24
  • 2017-12-19
  • 2017-03-13
  • 2018-07-13
  • 2019-12-11
  • 1970-01-01
  • 2021-10-22
相关资源
最近更新 更多