1

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

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() 调用了完全相同签名的函数,但能够按顺序运行它们。这是如何在javascript中完成的?

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

4

1 回答 1

4

Connect 保留中间件和路由处理程序的“堆栈”(数组)。当一个请求被处理时,它只是按顺序遍历堆栈中的所有处理函数,并(根据一些路由匹配规则)调用处理函数。

this.stack.push({ route: route, handle: fn });
于 2013-06-11T18:23:27.990 回答