Mik*_* K. 3 angular2-http angular angular4-httpclient
我的有角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));
Run Code Online (Sandbox Code Playgroud)
我也尝试了一下,.timeoutWith(126000, Observable.throw(new Error("Timed out")))但无济于事。
您不能更改HTTP请求的Web浏览器的网络超时设置。该timeout()运营商抛出达到计时器时,JavaScript错误,但是这无关与通信网络超时。
例如; 我可以timeout()在任何可观察到的地方使用运算符。
of("hello").pipe(delay(5000), timeout(1000));
Run Code Online (Sandbox Code Playgroud)
上面的内容将在1秒后超时。
我的Angular 4.3.2代码正在调用我的后端服务,该服务需要2-4分钟才能返回
该服务器必须的2-4分钟的持续时间期间发送一个HTTP报头和部分身体。这是继续HTTP连接所必需的,客户端无法执行任何操作来保持连接活动。
HTTP请求无法快速完成是一种不好的做法。
您可以要求服务器启动任务,然后按一定时间间隔轮询以查看任务是否完成,或者可以使用websocket与服务器通信并保持连接状态,直到完成任务为止。
两种方法都是广泛的主题,我无法提供更多细节。
| 归档时间: |
|
| 查看次数: |
2099 次 |
| 最近记录: |