JavaScript的ES6语法11generator实例-KOA
Posted 光仔December
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript的ES6语法11generator实例-KOA相关的知识,希望对你有一定的参考价值。
上一篇我们学习了generator中的runner实例,使用generator配合Promise实现了异步操作改造成同步操作的方法。本篇我们来继续学习generator的另一个实例-----Koa。
一、Koa简介
Koa是一个新的web框架,由Express幕后的原班人马打造。该框架通过利用async函数,帮开发者丢弃回调函数,并有力地增强错误处理。
这里提到的“丢弃回调函数”,就很类似上一章我们实现的runner的效果,这里面也是用到了generator。
Koa框架是基于NodeJS的,不了解Node的童鞋也不要着急,我们仅说和generator有关的部分。
注:安装Node:https://www.runoob.com/nodejs/nodejs-install-setup.html
二、Koa中的generator
使用Koa很简单,我们现在文件夹下创建一个service.js文件,然后运行Node服务,打开控制台(cmd也可以),首先使用npm init指令生成package.json文件,这个是一个Node模块必须的模块的描述文件:
然后使用npm指令安装Koa框架:
然后在service.js中写下如下代码:
const koa=require('koa');//引用koa库
let server=new koa();//声明一个koa对象
server.listen(8080);//启用8080端口监听koa服务
好了,一个koa就跑起来了。
在koa对象中,有一个use方法,我们使用该方法,并给其body对象一个字符串:
server.use(function *(){
this.body='123';
});
然后运行service.js服务:
然后即可看到这个字符串在页面上:
这里的use实际上就是传入了一个generator函数,可以在该函数中使用yield来进行异步的暂停操作。
那么下面来使用异步操作测试一下。我们这次从数据库里读取数据,koa提供了连接mysql数据库的框架koa-mysql,我们安装一下:
然后打开本地数据库,创建一个表,添加一些数据:
然后引入mysql连接库,获取数据库连接对象,并查询相关表。完整代码如下:
const koa=require('koa');//引用koa库
const mysql=require('koa-mysql');//引用koa-mysql库
let server=new koa();//声明一个koa对象
//声明数据库连接对象
let db=mysql.createPool({host:'localhost',user:'root',password:'1234',database:'test'});
server.listen(8080);//启用8080端口监听koa服务
server.use(function *(){
let data = yield db.query('select * from user_table');
this.body=data;
});
重新运行service.js,效果如下:
可以看到,数据库中的数据全部被取出,以json的方式展示在页面上。
上面的查询数据库的语句“db.query('select * from user_table')”实际上是一个很典型的异步操作,而我们通过使用generator函数的yield关键字,在获取数据库数据之前,不打印数据,获取结束后,释放主进程,然后赋值给body显示到页面上,消除了数据库的异步操作,使其变为一个同步操作。
至此,generator函数的所有内容就结束了。下一篇我们来对整个ES6的知识点进行回顾复习和汇总梳理。
参考:深入解读ES6系列视频教程(kaikeba.com提供,主讲老师石川(Blue))
转载请注明出处:https://blog.csdn.net/acmman/article/details/116904107
以上是关于JavaScript的ES6语法11generator实例-KOA的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript的ES6语法9generator函数之yield关键字
JavaScript中ES6新特性-Generator异步方案