Koa学习笔记#1

作者: 苏星河 | 来源:发表于2016-08-01 20:52 被阅读112次

Koa的执行过程

背景:JavaScript为了实现异步编程,传统的方式有回调函数、事件监听等。所谓回调函数,就是把任务的第二段单独写在一个函数里,等到任务再次执行的时候,就执行这个函数(其实所谓的异步编程,也就是将任务分段执行)。这种方式在多个回调函数嵌套的时候,会变得难以管理,出现所谓的回调地狱(callback hell),为了解决这个问题,出现了Promise。Promise提供了then()方法,加载回调函数,每次返回this,实现链式调用。后来,到了ES6又出现了Generator函数。它最大的特点就是可以暂停执行函数,在需要暂停的地方用yield语句注明。
使用Generator实现异步编程:

function* gen(x){
  try{
    let y = yield x + 2;
  }catch(err){
    console.log(err);
  }
  return y;
}
var g = gen(10);
g.next(); //  返回Object{value:12,done:false},
g.next();// 返回Object{value:undefined,done:true}

每次执行next()返回一个对象,其中value是yield语句后面的表达式的值,表示当前阶段的值。done表示任务是否执行完毕。

不同于express简单的利用中间件传递控制权,在Koa中,用户请求通过中间件,遇到yield next语句时,会暂停执行当前中间件的剩余代码,请求被传递到下一个符合要求的路由,并直到yield next 捕获不到下一个中间件时,逆序返回继续执行代码(downstream)。
这种执行方式被称为级联(Cascading)。有点像CSS代码的继承嵌套的结构。

middleware1{
  //do something...
  //yield next
  middleware2{
    //do something...
    //yield next
    middleware3{
       //no next yield! 
    }
    //do middleware2 left
 }
 //do middleware1 left
}

下图可以解释这一过程


我的博客:http://voidman.xyz

相关文章

  • Koa学习笔记#1

    Koa的执行过程 背景:JavaScript为了实现异步编程,传统的方式有回调函数、事件监听等。所谓回调函数,就是...

  • Koa学习资料

    Koa2进阶学习笔记下一代web框架Koajs的在线课程Koa实战深入浅出 Koa Koajs 中文文档和资料

  • nodejs 学习笔记(1)koa2 koa-generator

    koa2是nondejs的开发框架,最近学习nodejs,这里记记笔记 首先安装好nodejs 安装koa2,全局...

  • koa2学习笔记1

    安装node 建立文件夹,koa2ex cd koa2ex npm install -y (初始化项目 -y表示默...

  • Koa学习笔记

    中间件 Koa 的最大特色,也是最重要的一个设计,就是中间件(middleware) 中间件的概念 代码中的log...

  • koa学习笔记

    一、中间件1、中间件的执行流程 以上是koa1的写法,koa2的写法有些不同,function * 写成 asyn...

  • koa学习笔记

    import和export在node中使用mongodb学习1 mongoose的学习2 先运行mongo.exe...

  • koa学习笔记

    安装 1. hello world app.use([路径],callback)ctx.body是ctx.resp...

  • koa

    koa 学习 中间件 koa-router koa-router 获取get/post请求参数 koa-bodyp...

  • nodejs学习笔记2(koa框架的使用)

    这是我以前学习的笔记,现在回顾mark一下 官网: https://koa.bootcss.com/[https:...

网友评论

    本文标题:Koa学习笔记#1

    本文链接:https://www.haomeiwen.com/subject/njffsttx.html