## 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數據庫取數據生成接口