generator函数学习记录

1. generator函数是什么

普通的js函数一旦执行,就会运行到最后或者遇见return才会结束,运行期间无法被打断,基于此种情况,ES6提供了generator函数,也叫生成器函数。

它是一种异步解决方案,形式上是函数,但是为了区别于普通函数,它拥有以下几个特征:

  • 函数名前有一个*区分,例如:function * fun1 ( ) { ... } ,* fun2 ( )  { ... }
  • 函数体内可以使用yield表达式,定义内部的不同状态,可以有多个yield,这也是和return 不同的地方。return 只能执行一次, 而yield 可以执行多次,注意:yeild只能在generator函数中使用,在其他地方使用会报错
  • 直接调用generator函数并不会执行,而是会返回一个Iterator Object (遍历器对象),需要依次调用generator函数内部的next( )方法,来遍历函数内部的每个状态。generator 函数是分段执行的,yield表达式是暂停执行的标记,而next方法可以恢复执行。
  • next方法的作用是分段执行generator函数,每次调用next( )方法,都会返回一个对象来表示当前阶段的信息 {value: " ", done: " " }, value 是yeild表达式后面的值,done是用来判断generator函数是否执行完毕,是否还有下一个阶段
//普通函数
function fun1() {
  return "今天周一";
}
//普通函数需要调用
fun1 () //输出"今天周一"

//generator函数
function* fun2() {
  yield "今天周一"
  yield "明天周二"
  return "后天周三"
}

let fun = fun2() //直接输出会返回一个Iterator对象,并不会执行
fun.next() //输出"今天周一"
fun.next() //输出"今天周二"
fun.next() //输出"今天周三"
fun.next() //输出 undefined

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值