我是靠谱客的博主 自然流沙,最近开发中收集的这篇文章主要介绍ES6学习——生成器(Generators):生成器+迭代器,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

我们知道生成器也是迭代器,所以操作迭代器的方法都可以用来操作生成器,下面逐一过下:

function* genFunc() {
    yield 'a';
    yield 'b';
}

1)next方法直接调用

let genObj = genFunc();

genObj.next()//{ value: 'a' , done: false }
genObj.next()//{ value: 'b' , done: }
genObj.next()//{ value:  undefined, done: true  }


2)for-of循环

for (let x of genFunc()) {
    console.log(x);//a b
}


3)spread操作符

let arr = [...genFunc()]; // ['a', 'b']

4)数组解构赋值

let [x, y] = genFunc();//x=a,y=b


我们知道生成器最后有个返回值的,那么这个返回值会不会影响这些操作结果呢?

function* genFuncWithReturn() {
    yield 'a';
    yield 'b';
    return 'result';
}


let genObjWithReturn = genFuncWithReturn();
genObjWithReturn.next()//{ value: 'a', done: false }
genObjWithReturn.next()//{ value: 'b', done: false }
genObjWithReturn.next()//{ value: 'result', done: true }//return的结果多为done为true时的value值

for (let x of genFuncWithReturn()) {
    console.log(x);//a b
}

let arr = [...genFuncWithReturn()]; // ['a', 'b']

从上面的例子可以看出,next函数调用最后一步或有影响,剩下的操作符基本都是忽略return返回值的。


*以上全部代码在Chrome 48下通过测试

最后

以上就是自然流沙为你收集整理的ES6学习——生成器(Generators):生成器+迭代器的全部内容,希望文章能够帮你解决ES6学习——生成器(Generators):生成器+迭代器所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部