## 1.generator基础
generator函数最大的特点是交出函数的执行权。
~~~
function *gen(x){
yield x+2;
return x;
}
var g = gen(3);
console.log(g.next());
//{value: 5, done: false}
console.log(g.next());
//{value: 3, done: true}
~~~
- 1.gen(3)
调用generator函数不会立即执行,而是会返回一个遍历器
- next()方法,会移动内部指针,指向[第一个遇到的yield语句](),上例是执行到x+2为止。next()方法的作用:
>分阶段执行generator函数。每次调用next方法,会返回一个对象。
- 返回的对象,表示当前阶段的信息(value 属性和 done 属性)
* value 属性是 yield 语句后面表达式的值,表示当前阶段的值;done 属性是一个布尔值,表示 Generator 函数是否执行完毕,即是否还有下一个阶段
## 2.Generator函数的数据交换
~~~
function *gen(x){
var y = yield x+2;
return y;
}
~~~
>Tip:第一个next()传入值没用
~~~
var g = gen(1);
g.next() // { value: 3, done: false }
g.next(2) // { value: 2, done: true }
~~~
>Tip:第二个next()如果不传值
~~~
g.next() // { value: 3, done: false }
g.next() // { value: undefined, done: true }
~~~
* next 方法返回值的 value 属性,是 Generator 函数向外输出数据;next 方法还可以接受参数,这是向 Generator 函数体内输入数据。
* 第一个 next 方法的 value 属性,返回表达式 x + 2 的值(3)
* 第二个 next 方法带有参数2,这个参数可以传入 Generator 函数,作为上个阶段异步任务的返回结果,被函数体内的变量 y 接收。因此,这一步的 value 属性,返回的就是2(变量 y 的值)。
### demo01
~~~
function *gen(x){
var y = yield x+3;
yield y;
}
var g = gen(1);
console.log(g.next())
//这个参数作为上个阶段异步任务的返回结果,被第二个next()函数接收
console.log(g.next(13))
~~~
### demo02
~~~
function http(x){
return x+2;
}
function *getData(){
var y= yield http(10)
yield http(y)
}
var gen = getData(10);
console.log(gen.next())
console.log(gen.next(20))
~~~
~~~
{value: 12, done: false}
{value: 22, done: false}
~~~
- 第一章 入门
- 1-1 项目技术栈
- 1-1 promise
- 1-1-1 promise-ajax
- 1-1-1 util.promisify
- 1-2 async
- 1-2-1 async-await
- 1-2-2 async-util.promisify
- 1-3 async-map
- 1-3 iterator
- 1-4 generator
- 1-4-1 generator基础
- 1-4-2 generator-ajax
- 1-5 process
- 1-0 参考教程
- 1-6 静态方法
- 1-7 单例
- 第二章 ES-7
- 2-1 co
- 2-2 异步读取文件
- 2-3 co-ajax
- 第三章 koa核心
- 3-1 server
- 3-2 koa的中间件
- 3-3 koa-session
- 3-3 koa-router
- 3-3-1 ctx.params动态路由
- 3-4 koa路由get传值
- 3-5 中间件
- 3-5-1匹配路由之前设置一个中间件
- 3-5-2 中间件执行顺序
- 3-5-3 错误处理中间件
- 3-6 ejs
- 3-6-1 ejs基本语法
- 3-7 koa-post
- 3-8 koa-static静态资源中间件
- 3-9 art-template
- 3-10 koa-cookie的使用
- 3-11 koa-session
- 3-12 koa应用生产器
- 第四章
- 第一节 pug模板
- 第二节 puppeteer爬虫
- 2-1 爬取豆瓣top250数据
- 2-2 爬取豆瓣剧情页数据
- 第三节 将数据上传到七牛
- 第五章 mongoBD
- 5-1 安装
- 5-2 基本命令
- 5-3 mongoose连接数据库
- 5-3-1 简单连接数据库
- 5-3-2 schema,model,entity
- 5-3-3 schema向数据库中添加数据
- 5-3-4 豆瓣数据添加到数据库
- 5-3-5 glob引入schema
- 5-3-6 schema的数据类型
- 5-4 从数据库取得数据返回给前台
- 5-5 mongo数据库取数据生成接口