CNode

koa-router源码疑惑

问答
Qqichangjun发布于9 年前最后回复9 年前4 回复4143 浏览0 收藏

屏幕快照 2017-12-05 上午11.02.47.png 这里定义了router的中间件,api.routes()实际返回的是dispatch函数

Router.prototype.routes = Router.prototype.middleware = function () {
  var router = this;
  var dispatch = function dispatch(ctx, next) {...}
  dispatch.router = this;
  return dispatch;
}

那在koa的application.jscompose遍历执行所有中间件时,为什么没有执行dispatch这个函数,而是在访问到对应的路由时,才会调用对应的dispatch?

查看回复

回复 (4)

I
i5ting#1·9 年前

dispatch是对外暴漏的中间件啊

Q
qichangjun#2·9 年前

@i5ting 问题是我添加了三个dispatch中间件,为什么middleware里只有一个dispatch?,不应该是发现路由不匹配时调用next()继续去下一个dispatch中匹配嘛?

Q
qichangjun#4·9 年前

@i5ting 稍微明白点了,确实middleware中会有三个dispatch,只是在匹配到正确的之后的dispatch就不会再执行了

参与回复
登录后即可参与回复。登录