app.use()
,简单说其实就是把函数存放到this.middleware
数组里,然后返回实例对象this
。
koa2
中详细点,则是判断是generator函数,用koa-convert
(其实用的是co
)转换一次,再存放到this.middleware
数组里。
use(fn) {
if (typeof fn !== 'function') throw new TypeError('middleware must be a function!');
if (isGeneratorFunction(fn)) {
deprecate('Support for generators will be removed in v3. ' +
'See the documentation for examples of how to convert old middleware ' +
'https://github.com/koajs/koa/blob/master/docs/migration.md');
fn = convert(fn);
}
debug('use %s', fn._name || fn.name || '-');
this.middleware.push(fn);
return this;
}
真正执行是app.listen
。
具体源码可以看我这篇文章。
若川:学习 koa 源码的整体架构,浅析koa洋葱模型原理和co原理
本文向大家介绍请说说相关面试题,主要包含被问及请说说时的应答技巧和注意事项,需要的朋友参考一下 pre标签是块级元素,code标签是行内元素 pre的内容保留换行符和空格,code的内容不保留 单行代码用code,多行代码用pre
本文向大家介绍说说Redux的实现流程相关面试题,主要包含被问及说说Redux的实现流程时的应答技巧和注意事项,需要的朋友参考一下 组件视图 通过 事件 发送 dispatch action store 接收到 action , 把action和 oldState 当做参数发送给 reducers reducers 接收 action和 oldState 通过计算返回新的 newState 给 s
本文向大家介绍说说你对执行上下文的理解相关面试题,主要包含被问及说说你对执行上下文的理解时的应答技巧和注意事项,需要的朋友参考一下 执行上下文相当于当前代码的一个运行环境。 一般执行上下文会以栈的形式在执行栈中存储。 栈顶的执行环境可以访问到整个栈中的变量。
我正在尝试理解代码的调用顺序。来人,请解释一下通话顺序。 根据我的理解,静态块将在JVM开始执行时立即执行,甚至在main类之前执行。然后执行实例初始化块。则应执行构造函数。但如果我们从静态字段调用main方法,回调是如何工作的。以及哪个main将首先被执行,哪个JVM正常执行,哪个static字段显式调用。 附注:我修改了我的问题。前面我把普通方法和构造函数混淆了,所以一些答案看起来可能不相关,
本文向大家介绍说说前端中的事件流?相关面试题,主要包含被问及说说前端中的事件流?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: HTML中与javascript交互是通过事件驱动来实现的,例如鼠标点击事件onclick、页面的滚动事件onscroll等等,可以向文档或者文档中的元素添加事件侦听器来预订事件。想要知道这些事件是在什么时候进行调用的,就需要了解一下“事件流”的概念。 什么是事件
本文向大家介绍请你来说一说协程?相关面试题,主要包含被问及请你来说一说协程?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 1、概念: 协程,又称微线程,纤程,英文名Coroutine。协程看上去也是子程序,但执行过程中,在子程序内部可中断,然后转而执行别的子程序,在适当的时候再返回来接着执行。 例如: 由协程运行结果可能是12x3yz。在执行A的过程中,可以随时中断,去执行B,B也可能在