- 实现超时机制的具体方法:
- 在Node.js中使用
http
模块发起请求时,可以利用request.setTimeout()
方法来设置请求的超时时间。该方法接受一个参数,即超时时间(单位为毫秒)。当请求在设定的时间内没有完成时,就会触发timeout
事件。
- 处理超时后的逻辑:
- 通常在超时后,需要终止请求,以避免资源的浪费。可以调用
request.abort()
方法来终止请求。同时,可以根据业务需求向用户返回相应的错误信息,例如一个HTTP 408(请求超时)状态码。
- 代码示例:
const http = require('http');
const options = {
hostname: 'www.example.com',
port: 80,
path: '/',
method: 'GET',
timeout: 2000 // 设置超时时间为2秒
};
const req = http.request(options, (res) => {
console.log(`状态码: ${res.statusCode}`);
res.on('data', (chunk) => {
console.log(`接收的数据: ${chunk}`);
});
res.on('end', () => {
console.log('响应结束');
});
});
req.on('timeout', () => {
console.log('请求超时');
req.abort();
});
req.on('error', (e) => {
console.log(`请求发生错误: ${e.message}`);
});
req.end();