ES6 Generator函数
ES6 Generator函数
特性:
- Generator函数,通过yield关键字,把函数的执行流挂起,为改变执行流提供了可能。
Generator函数组成
- 在function后面,函数名之前有个 * 号。
- 函数内部有yield表达式。
- 其中 * 用来表示函数为 Generator 函数,yield 用来定义函数内部的状态。
function* func(){
console.log("one");
yield '1';
console.log("two");
yield '2';
console.log("three");
return '3';
}
let f=function();
f.next();
// one
// {value: "1", done: false}
f.next();
// two
// {value: "2", done: false}
f.next();
// three
// {value: "3", done: true}
f.next();
// {value: undefined, done: true}
next() 调用
- 一般情况下,next 方法不传入参数的时候,yield 表达式的返回值是 undefined 。当 next 传入参数的时候,该参数会作为上一步yield的返回值。
function* func(){
console.log("one");
yield '1';
console.log("two");
yield '2';
}
let f=function();
f.next();
// one
// {value: "1", done: false}
f.next();
// two
// {value: "2", done: false}
f.next();
// {value: undefined, done: true}
done 表示函数是否执行完, true表示执行完了 false表示未执行完。
return方法
- return 方法返回给定值,并结束遍历 Generator 函数。
- return 方法提供参数时,返回该参数;不提供参数时,返回 undefined 。
function* func(){
console.log("one");
var a= yield 1 ;
console.log("two");
var b= yield 2 ;
console.log("three");
// return 99;
console.log("three");
yield 3;
console.log("four");
return 4;
}
let f=function();
clonsole.log(f.next());
clonsole.log(f.next(10));
f.return(88);
clonsole.log(f.next(20));
clonsole.log(f.next());

- 失联
最后编辑时间 2023,11,16;8:20
1811

被折叠的 条评论
为什么被折叠?



