首页 » 技术分享 » JavaScript学习(七)generator

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;
   }
}

转载自原文链接, 如需删除请联系管理员。

原文链接:JavaScript学习(七)generator,转载请注明来源!

0