JavaScript学习(七)generator

14,generator

一句话解释:一个可以返回多次并且能保存状态的函数

function* f(x) {
    yield x + 1;
    yield x + 2;
    return x + 3;
}
//直接调用一个generator和调用函数不一样
// ,f(x)仅仅是创建了一个generator对象,还没有去执行它。
//调用generator对象有两个方法,
// 一是不断地调用generator对象的next()方法:
//当执行到done为true时,这个generator对象就已经全部执行完毕
// ,不要再继续调用next()了。
//第二个方法是直接用for ... of循环迭代generator对象,
// 这种方式不需要我们自己判断done:(但不会返回return的结果)
var res =f(2);
res.next();
//{value: 3, done: false}
res.next();
//{value: 4, done: false}
res.next();
//{value: 5, done: true}
var res2 =f(3);
for(let i of res2){ console.log(i);//4  5
}

应用:利用generator编写一个ID自增器

function* f(){
    for(let i=1;i<num;i++){
        yield i;
   }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值