1. 基本使用
generator 函數是 ES6 提供的一種異步程式設計解決方案
一個基本的 generator 函數如下
/*
* 特征
* 1. 函數帶有 * 符号
* 2. 函數内可以使用 yield 表達式
* 3. 傳回值為 generator 執行個體
* 4. 傳回的執行個體可以調用 next 等一系列内置方法
*/
function* generatorFn() {
yield 'hello';
yield 'world';
return 'ending';
}
const ge = generatorFn() // generatorFn {} | 傳回generator執行個體
ge.next()
1.1. yield
yield 表達式是暫停标記;函數執行到此處會暫停
function* generatorFn() {
const list = [{}]
console.log(list) // 注意:調用 next 函數執行到這一行後,遇到 yield 表達式,則停止執行
yield 'hello';
yield 'world';
return 'ending';
}
const ge = generatorFn()
ge.next() // 注意:要調用 next 方法才會開始執行
1.2. next
函數,是
next
執行個體中的方法。
generator
- 啟動函數的執行
- 可以将停止的
函數恢複執行,直到遇見下一個
generator
表達式
yield
- 遇到 yield 會停止執行
function* generatorFn() {
const list = [{}]
console.log(list)
yield 'hello';
yield 'world';
return 'ending';
}
const ge = generatorFn()
ge.next() // [{}]; { value: 'hello', done: false }