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

Node.js Express中调用next()时,后续中间件是否同步执行?

Express中next()的调用同步性解析

Express里调用next()默认是同步执行的,下一个中间件会在当前进程tick中直接运行,不会被放入微任务或回调队列延迟执行。

你可以通过一段简单的代码验证这个特性:

const express = require('express');
const app = express();

app.use((req, res, next) => {
  console.log('中间件1启动');
  next();
  console.log('中间件1收尾');
});

app.use((req, res, next) => {
  console.log('中间件2执行中');
  next();
});

app.get('/', (req, res) => {
  res.send('Hello World');
});

app.listen(3000);

启动服务后访问根路径,控制台输出顺序会是:

中间件1启动
中间件2执行中
中间件1收尾

这个输出逻辑完全符合同步函数调用的特征:next()执行后,程序会立刻跳转到下一个匹配的中间件执行,当前中间件中next()之后的代码,要等下一个中间件(以及后续所有中间件/路由处理函数)执行完毕后,才会继续执行。

只有两种情况会让next()触发的中间件延迟执行:

  • 手动把next()放到异步操作里(比如setTimeout(next, 0))
  • 使用next('route')或next(error)这类特殊调用时,Express内部可能会有异步处理逻辑,但这属于特殊场景,并非默认行为。

内容的提问来源于stack exchange,提问作者adhi narayan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 23:30:54