You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Async/Await是否会降低服务器性能?附Node.js测试代码

我来帮你整理并完善这段用于验证Async/Await对HTTP服务器性能影响的测试代码,同时补充对应的Async/Await实现版本,方便你做对比测试:

验证Async/Await对HTTP服务器性能的测试代码

基础HTTP服务器框架

这是通用的服务器启动代码(已修正原代码里的localost拼写错误):

const http = require('http')
// 测试时可切换成不同的请求处理函数
const server = http.createServer(reqResHandler);
server.listen(3000, err => {
  if (err) throw err
  console.log('Server listening on: http://localhost:3000')
})

无Promise版本的请求处理函数(回调风格)

我帮你补全了原代码未完成的响应逻辑,同时增加了必要的错误处理:

const reqResHandler = (req, res) => {
  req.body = [];
  req.on('data', (chunk) => req.body.push(chunk));
  req.on('end', () => {
    req.body = Buffer.concat(req.body);
    res.setHeader("Content-Type", "text/plain");
    res.end(`Received request body of length: ${req.body.length}`);
  });
  // 捕获请求阶段的错误,避免未捕获异常
  req.on('error', (err) => {
    res.statusCode = 500;
    res.end(`Request error: ${err.message}`);
  });
}

Async/Await版本的请求处理函数

为了做性能对比,我们把读取请求体的逻辑封装成Promise,再用Async/Await语法实现更简洁的代码:

// 封装读取请求体的Promise工具函数
const readRequestBody = (req) => {
  return new Promise((resolve, reject) => {
    const bodyChunks = [];
    req.on('data', (chunk) => bodyChunks.push(chunk));
    req.on('end', () => resolve(Buffer.concat(bodyChunks)));
    req.on('error', (err) => reject(err));
  });
}

// Async/Await风格的请求处理函数
const reqResHandlerAsync = async (req, res) => {
  try {
    const requestBody = await readRequestBody(req);
    res.setHeader("Content-Type", "text/plain");
    res.end(`Received request body (Async/Await) of length: ${requestBody.length}`);
  } catch (err) {
    res.statusCode = 500;
    res.end(`Request error: ${err.message}`);
  }
}

关于性能差异的核心说明

  • Async/Await本质是Promise的语法糖,底层依然基于Node.js的事件驱动模型,不会引入额外的性能瓶颈。
  • 两种写法的性能差异仅来自Promise封装的微小开销,在高并发场景下这种差异几乎可以忽略不计。
  • 如果你的业务逻辑包含其他异步操作(如数据库查询、外部API调用),Async/Await会让代码的可读性和可维护性大幅提升,同时不会比回调或链式Promise带来更多性能损耗。

内容的提问来源于stack exchange,提问作者Amit Kumar Gupta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:36:12