一、基础语法
//*表示未生成器函数当为生成器函数时会有yield
function* 函数名() {
// 函数内容
yield;
}
二、调用 Generator 函数
Generator 函数和普通函数一样,都是通过 函数名() 来进行调用:
函数名();
但是, Generator 函数在调用后,并不会执行内部的代码。但是会返回一个迭代器对象。
const it = 函数名();
下一步,调用迭代器的 next() 方法来进入函数执行函数内部代码。
it.next();
三、yield
yield 可以用来阻塞函数内代码的执行。
function* myGenerator() {
console.log('1、myGenerator执行了');
yield;
console.log('2、myGenerator执行了');
}
const it = myGenerator();
it.next();
it.next();
yield 后面可以跟一个表达式:
function* myGenerator() {
console.log('1、myGenerator执行了');
yield 'hello';
console.log('2、myGenerator执行了');
yield 'world';
console.log('3、myGenerator执行了');
}
const it = myGenerator();
console.log(it.next());
console.log(it.next());
next() 还可以传递参数,这个参数会作为当前 yield 的返回值:
function* myGenerator() {
console.log('1、myGenerator执行了');
const res = yield 'hello';
console.log('res', res);
}
const it = myGenerator();
console.log(it.next());
console.log(it.next("world"));