gpt4 book ai didi

javascript - 客户端 JS/Angular 中是否存在 HTTP 连接超时?

转载 作者:行者123 更新时间:2023-12-02 22:17:12 25 4
gpt4 key购买 nike

我正在使用 Angular 的 HttpClient发出 HTTP 请求,并且我想为其指定超时。

我知道我可以使用 HTTPInterceptors 并向 RxJS 运算符添加超时,但是,这些适用于整个请求,如果数据传输正在进行,我不想中止,只有当浏览器在尝试连接时挂起时.

我需要的超时类型可以在 Node.js 中找到,这有很好的解释 here :

Let's say you called socket.setTimeout(300) to set the timeout as 300 ms, and it took 100 ms for DNS lookup, 100 ms for making a connection with a remote server, 200 ms for the remote server to send response headers, 50 ms for transferring the first half of the response body and another 50 ms for the rest. While the entire request & response took more than 500 ms, timeout event is not emitted at all.

在 Angular 应用程序中是否可以有这样的超时?

最佳答案

我查看了 HttpClient 的源代码。实际处理底层 XMLHttpRequest 的代码是 HttpXhrBackend 类,位于名为 xhr.ts 的源文件中。

遗憾的是,HttpXhrBackend 仅使用 XMLHttpRequest 的默认设置,并没有提供设置 XMLHttpRequest 超时值的方法。

我看到了使用 RxJS 运算符来缩短有效超时的建议,但这有点像黑客,并没有真正满足您的要求。

因此,从技术上讲,您的问题的答案是“否”,而不是使用现有的 Angular HttpClient,但我认为您可以创建自己的 HttpBackend 实现并尝试注入(inject)它。

附注This article展示如何提供自定义 HttpBackend 实现。

关于javascript - 客户端 JS/Angular 中是否存在 HTTP 连接超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59348500/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com