ES6 Generator函数

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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值