我正在为套接字系统编写自己的中间件实现。我已经阅读了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
答案 0 :(得分:0)
更改route
课程内的Router
功能如下,socket.write(1)
的结果将为4:
class Router {
constructor() {
this.middleware = new Middleware
}
route(data) {
each(this.middleware.handlers, function (handler) {
data = handler(data)
})
return data
}
}