如何将数据传递给 NodeJS 中的下一个中间件函数

How to pass data to next middleware function in NodeJS

我正在为套接字系统编写自己的中间件实现。我通读了 Laravel 中间件的源代码和一些关于 ExpressJS 实现的文档以获取灵感。

但是,我无法将数据从一个中间件处理程序传递到另一个。

我在下面写了一个非常基本的例子。输出应该是 4 但我不知道如何将输出从一个处理程序传递到另一个处理程序。我猜测是通过设置一个临时变量,但我不确定它的性能如何。

let each = require('lodash/each')
class Middleware {
  constructor() {
    this.handlers = [
      function (data) {return data + 1},
      function (data) {return data + 2}
    ]
  }
}

class Router {
  constructor() {
    this.middleware = new Middleware
  }
  route(data) {
    each(this.middleware.handlers, function(handler) {
      handler(data) // no idea what to do here
    })
  }
}


class Socket {
  constructor() {
    this.router = new Router
  }
  write(data) {
    return this.router.route(data)
  }
}

let router = new Router

console.log(socket.write(1)) // should be 4

Router中的route函数改为class如下,socket.write(1)的结果为4:

class Router {
    constructor() {
        this.middleware = new Middleware
    }
    route(data) {
        each(this.middleware.handlers, function (handler) {
            data = handler(data)
        })
        return data
    }
}