当我们在前端或后端进行 HTTP 请求时,超时连接总是一个值得注意的问题。为了避免出现无响应的情况,在 Node.js 服务器中,使用 time-out
模块对请求进行限制是一种很常见的做法。但是,如果你正在使用 npm 包进行开发,则可以使用 timed-out
这个工具包来处理这个问题。
安装
你可以通过 npm 安装 timed-out
:
npm install timed-out
接着,你可以在代码中引入它:
const timeout = require('timed-out');
使用
要使用 timed-out
,你需要将其作为 middleware 或者像通用的库使用。以下介绍这两种用法。
中间件模式
在 Express 实例上添加一个新的中间件,可以使用如下代码实现:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- ------- - --------------------- ----- --- - ---------- -- ------------ ------------- ---- ----- -- - -- -- - ---- ------------ ---- ----- ------ ---
这样,如果请求超过 5 秒钟没有回应,将会自动停止,并返回 504 Gateway Timeout
状态码。
作为通用的库
在此场景中,你需要在进行请求之前创建一个 timed-out
实例。传递一个获取响应的函数,和超时时间(以毫秒为单位):
const timedOut = require('timed-out'); const request = http.get('http://example.com/', (res) => { // 处理响应结果 }); // 设置超时时间为 2 秒钟 timedOut(request, 2000);
类似地,在这里,如果请求超过 2 秒钟没有回应,将会自动停止,并抛出一个错误。
总结
在前端或后端进行 HTTP 请求时,超时连接总是需要注意的问题。使用 Node.js 的 time-out
模块可以很好地处理这个问题,而 npm 包 timed-out
则提供了更方便的解决方案。无论你是希望把它作为 Express 中间件来使用,还是直接将其用于发出请求,这都是一种有效且简单的解决方案。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/57086