将多个回调函数传递给Express路由

时间:2016-04-14 16:36:33

标签: node.js express callback routes

基于快速文档here,我们可以附加HTTP方法来表达实例,并在路由匹配时执行回调函数。 我们还可以执行多个回调路由处理程序。路由处理程序可以是函数,函数数组或两者的组合形式,如以下示例所示。

app.get('/', function (req, res) {
   res.send('GET request to the homepage');
});

或使用数组

  var cb0 = function (req, res, next) {
    console.log('CB0');
    next();
  }

  var cb1 = function (req, res, next) {
   console.log('CB1');
   next();
  }

  var cb2 = function (req, res) {
    res.send('Hello from C!');
  }

  app.get('/example/c', [cb0, cb1, cb2])

但是,在我们的应用程序中,我看到开发人员使用的语法是

app.get('/example/c',cb0, cb1)

注意没有数组[]但是以逗号分隔传递2个回调函数。这很有效。但只是好奇如何?

2 个答案:

答案 0 :(得分:0)

它的工作原因是中间件。 check this out

答案 1 :(得分:0)

在Javascript中,无论函数定义是什么,您都可以将任意数量的参数传递给函数调用。例如,可以使用两个以上的参数调用function x(a, b){}。程序员在事先不知道函数调用将接收多少个参数时,会利用arguments特殊变量。快递(.get,.put,.post等)中的路由功能就是这种情况。他们接受您传入的任意数量的参数,并将它们视为中间件函数,如documentation中所示。