koa2源码阅读的一点问题
在阅读koa2的源码过程中,读到了application里面的一个callback方法,因为这个方法是返回createServer所需要的回调函数的,就对其中的一句代码感到了不理解,就是handleRequest里面为什么需要return this.handleRequest(ctx, fn)
呢。不return直接执行好像也没有问题
callback() {
const fn = compose(this.middleware);
if (!this.listeners('error').length) this.on('error', this.onerror);
const handleRequest = (req, res) => {
const ctx = this.createContext(req, res);
return this.handleRequest(ctx, fn);
};
return handleRequest;
}
有懂的大神帮忙解答下吗,多谢了!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
结论:在绝大多数情况下,这个
return
是没有任何实际作用的,除了一些特殊的场景,比如从express迁移到koa。看具体例子:
return this.handleRequest(ctx, fn)
返回了promise
实例,方便开发者后续的操作(在请求处理完成之后)。当然,上面的例子因为比较简单,不一定要用
.then()
也能实现。只不过返回Promise
实例,编码起来会方便很多。比如你想在koa处理完请求后做一些事情,如果没有
return
的话,你需要些一些比较恶心繁琐的代码来判断请求是否已经处理完。这里的
this.handleRequest
指的不是上面刚定义的handleRequest
,而是Application
的handleRequest
方法。https://github.com/koajs/koa/...
至于作用,大概是返回一个
promise
,依次调用之前传递的中间件,同时带有一个默认的错误处理中间件看return有没有作用看调用的地方
createServer是不需要返回值的