ES6初步了解生成器

简介: ES6初步了解生成器

生成器函数是ES6提供的一种异步编程解决方案,语法行为与传统函数完全不同

语法: function * fun(){ }

function * gen(){
        console.log("hello generator");
    }
    let iterator =gen()
    console.log(iterator)

打印:

我们发现没有打印”hello generator“

我们需要使用到next方法

如果大家对迭代器感兴趣大家可以阅读这篇ES6初步了解迭代器

function * gen(){
        console.log("hello generator");
    }
    let iterator =gen()
    iterator.next()

我们可以使用yield,可以看作是函数代码的分隔符

function * gen(){
        console.log(111)
        yield "hello"
        console.log(222)
        yield "generator"
        console.log(333)
        yield "!"
        console.log(444)
    }
    let iterator =gen()
    iterator.next() //111
    iterator.next() //222
    iterator.next() //333
    iterator.next() //444

我们也可以使用for…of来遍历

function* gen() {
        yield "hello"
        yield "generator"
        yield "!"
    }
    for (let v of gen()) {
        console.log(v)
    }

生成器函数的参数传递

function* gen(arg) {
        console.log(arg)
        yield 111
        yield 222
        yield 333
    }
    // 执行获取迭代器对象
    let iterator = gen("aaa")
    console.log(iterator.next())

next方法可以传入实参

function* gen(arg) {
        console.log(arg) //AAA
        let one = yield 111
        console.log(one) //BBB
        let two = yield 222
        console.log(two) //CCC
        let three = yield 333
        console.log(three) //DDD
    }
    // 执行获取迭代器对象
    let iterator = gen("AAA")
    console.log(iterator.next())
    // 第二次调next方法传入这个实参作为第一个yield语句的返回结果
    console.log(iterator.next("BBB"))
    // 第三次调next方法传入这个实参作为第二个yield语句的返回结果
    console.log(iterator.next("CCC"))
    // 第四次调next方法传入这个实参作为第三个yield语句的返回结果
    console.log(iterator.next("DDD")) 
    // 以此类推

感谢大家的阅读,如有不对的地方,可以向我指出,感谢大家!

相关文章
|
5月前
ES6之生成器
ES6之生成器
|
5月前
|
前端开发
ES6之生成器(Generator)
生成器(Generator)是ES6引入的一种特殊的函数,它可以通过yield关键字来暂停函数的执行,并返回一个包含value和done属性的对象。生成器的概念、作用和原理如下所述:
63 0
|
5月前
ES6 Generator 函数
ES6 Generator 函数
|
10天前
|
自然语言处理 前端开发
如何理解 ES6 中 Generator ?
【10月更文挑战第7天】
|
5月前
|
JavaScript 前端开发
js开发:请解释什么是ES6的Generator函数,以及它的用途。
ES6的Generator函数是暂停/恢复功能的特殊函数,利用yield返回多个值,适用于异步编程和流处理,解决了回调地狱问题。例如,一个简单的Generator函数可以这样表示: ```javascript function* generator() { yield 'Hello'; yield 'World'; } ``` 创建实例后,通过`.next()`逐次输出"Hello"和"World",展示其暂停和恢复的特性。
37 0
|
5月前
|
JavaScript 前端开发
ES6 函数
ES6(ECMAScript 2015)是 JavaScript 的一个重要版本,它引入了许多新的特性和语法。其中,函数是 ES6 的一个重要组成部分,它提供了许多新的函数语法和特性,如箭头函数、函数参数默认值、函数解构赋值等。
38 8
|
10月前
ES6学习(九)—Generator 函数的语法
ES6学习(九)—Generator 函数的语法
ES6 从入门到精通 # 15:生成器 Generator 的用法
ES6 从入门到精通 # 15:生成器 Generator 的用法
101 0
ES6 从入门到精通 # 15:生成器 Generator 的用法
|
JavaScript 前端开发 Java
【ES6】Generator函数详解
【ES6】Generator函数详解
134 0