我的 Angular 4.3.2 代码正在调用我的后端服务,需要 2-4 分钟才能返回。仅使用默认值this.http.get
代码中,我看到默认超时在 2 分钟后开始。然而,当我尝试设置超过 2 分钟的超时时,它会失败,因为它永远不会让超时超过 2 分钟。
我尝试过 100、100000 (1.7m) 和 114000(1.9m),这些值在这些值下会超时。但是当我尝试 126000 (2.1m)、180000 (3m) 和 1800000 (30m) 时,我再次看到它在 2 分钟后超时。
this.http.get('myUrl')
.timeout(126000)
.map((res: Response) => this.convertResponse(res));
我也尝试过.timeoutWith(126000, Observable.throw(new Error("Timed out")))
无济于事。
您无法更改 Web 浏览器的 HTTP 请求的网络超时设置。这timeout()
当计时器到达时,运算符会抛出 JavaScript 错误,但这与通信的网络超时无关。
例如;我可以使用timeout()
操作符开启any可观察到的。
of("hello").pipe(delay(5000), timeout(1000));
以上将在 1 秒后超时。
我的 Angular 4.3.2 代码正在调用我的后端服务,需要 2-4 分钟才能返回
The server必须在 2-4 分钟的时间内传输 HTTP 标头和部分正文。这是继续 HTTP 连接所必需的,并且客户端无法执行任何操作来保持连接处于活动状态。
HTTP 请求不能快速完成是一种不好的做法。
您可以要求服务器启动任务,然后按一定时间间隔轮询以查看任务是否完成,也可以使用 websockets 与服务器通信并保持连接直到任务完成。
这两种方法都是广泛的主题,我无法详细讨论。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)