目录
[Generator 是 ES6提出的解决异步编程的方案之一](#Generator 是 ES6提出的解决异步编程的方案之一)
[1、Generator 和传统函数不一样,使用 * 表示](#1、Generator 和传统函数不一样,使用 * 表示)
[2、Generator 函数可以使用 yield 中途暂停函数](#2、Generator 函数可以使用 yield 中途暂停函数)
[3、Generator(生成器) 函数的返回值是一个遍历器 ,需要定义一个变量接收遍历器,使用 next() 读取值](#3、Generator(生成器) 函数的返回值是一个遍历器 ,需要定义一个变量接收遍历器,使用 next() 读取值)
Generator 是 ES6提出的解决异步编程的方案之一
1、Generator 和传统函数不一样,使用 * 表示
2、Generator 函数可以使用 yield 中途暂停函数
function* test(){
yield 1;//暂停输出1
yield 2;
yield 3;
}
3、Generator(生成器) 函数的返回值是一个遍历器 ,需要定义一个变量接收遍历器,使用 next() 读取值
let te=test();
console.log(te.next());//{value:1,done:false} --返回yield后面的值
console.log(te.next());//{value:1,done:false} --返回yield后面的值
console.log(te.next());//{value:1,done:false} --返回yield后面的值
console.log(te.next());//{value: undefined, done: true} --返回yield后面的值 ---超出设置的值的范围
// next(); 传参
function* test(){
let a=2*(yield 10);//暂停得到后面的值
yield a;
yield a+10;
}
let te=test();
console.log(te.next());//{value: 10, done: false} --返回yield后面的值
//要先传值给到 a 计算的式子,替换式子进行计算
console.log(te.next(5));//{value: 10, done: false} --返回yield后面的值
console.log(te.next());//{value: 20, done: false} --返回yield后面的值
console.log(te.next());//{value: undefined, done: true} --返回yield后面的值 ---超出设置的值的范围