在express / connect中使用app.use()

我在快递网站上看到了示例代码:

var express = require('express'); var app = express(); // simple logger app.use(function(req, res, next){ console.log('%s %s', req.method, req.url); next(); }); // respond app.use(function(req, res, next){ res.send('Hello World'); }); app.listen(3000); 

这里app.use()调用完全相同的签名的function,但能够顺序运行它们。 这是怎么做到的JavaScript?

这里是app.use()的定义: https : //github.com/senchalabs/connect/blob/master/lib/proto.js

Connect保持中间件和路由处理程序的“堆栈”(一个数组)。 处理请求时,只需按顺序遍历堆栈中的所有处理函数(并遵循一些路由匹配规则),即可调用处理函数。

 this.stack.push({ route: route, handle: fn });