我在快递网站上看到了示例代码:
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
答案 0 :(得分:4)
Connect保持"堆栈" (一个数组)中间件和路由处理程序。处理请求时,它只是按顺序迭代堆栈中的所有处理函数,并(根据一些路由匹配规则)调用处理函数。
this.stack.push({ route: route, handle: fn });