MST

星途 面试题库

面试题:Node.js中如何实现网络通信的超时机制

在Node.js网络通信场景下,例如使用`http`模块发起请求,请描述实现超时机制的具体方法,并且说明如何处理超时后的逻辑,同时请给出相应的代码示例。
39.1万 热度难度
前端开发Node.js

知识考点

AI 面试

面试题答案

一键面试
  1. 实现超时机制的具体方法
    • 在Node.js中使用http模块发起请求时,可以利用request.setTimeout()方法来设置请求的超时时间。该方法接受一个参数,即超时时间(单位为毫秒)。当请求在设定的时间内没有完成时,就会触发timeout事件。
  2. 处理超时后的逻辑
    • 通常在超时后,需要终止请求,以避免资源的浪费。可以调用request.abort()方法来终止请求。同时,可以根据业务需求向用户返回相应的错误信息,例如一个HTTP 408(请求超时)状态码。
  3. 代码示例
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();