//Generator函数是ES6提供的一种异步编程解决方案
//语法行为和传统异步编程完全不同
//形式上和普通函数类似。有两个特征
//1、function关键字后面有个星号
//2、函数体内使用yield表示,定义不同的内部状态
//Generator函数就是一个状态机,在内部封装了多个状态
function* myGenerator() {
console.log("step1.....")
yield "hello";
console.log("step2.....")
yield "world"
console.log("step3.....")
return "ending"
}
//调用Generator后,函数并不立即执行,
//返回一个指向内部的指针对象,其实就是一个遍历器对象(Iterator)
let mygenerator = myGenerator()
//console.log(mygenerator)
//调用遍历器对象的next方法,让指针移向下一个状态
//也就是说内部指针从函数头部或者上一次停下来的地方开始执行
//直到遇到下一个yield表达式或者return语句为止。
//{value: "hello", done: false}
console.log(mygenerator.next())
//{value: "world", done: false}
console.log(mygenerator.next())
//{value: "ending", done: true}
console.log(mygenerator.next())
//console.log(mygenerator.next())