ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

生成器

2022-04-04 17:35:56  阅读:217  来源: 互联网

标签:console log generator 生成器 yield const


Gnerator---生成器 是ES6新增的一种函数控制、使用的方案

1:yiled来控制代码执行

2:生成器函数的返回值也是生成器---同时生成器也是特殊的迭代器 所以可以使用next()方法

生成器的基本使用以及yield控制流程

 1 function* foo() {
 2     const value1 = 100
 3     console.log("第一段", value1);
 4     //yield后面跟着的是返回的value值
 5     yield value1
 6     const value2 = 200
 7     console.log("第二段", value2);
 8     yield 2
 9     const value3 = 300
10     console.log("第三段", value3);
11     //后面没有值的话value就是undefined
12     yield
13     const value4 = 400
14     console.log("第四段", value4);
15     yield
16 }
17 const generator = foo()
18     //第一段 生成器是一个特殊的迭代器
19 
20 console.log("返回值1", generator.next());
21 console.log("返回值2", generator.next());
22 console.log("返回值3", generator.next());
23 console.log("返回值4", generator.next());

 

 生成器的传参方法

 1 function* foo(num) {
 2     const value1 = 100 * num
 3     console.log("第一段", value1)
 4         //给第二段传参
 5     const n = yield value1
 6     const value2 = 200 * n
 7     console.log("第二段", value2);
 8     const n2 = yield 2
 9     const value3 = 300 * n2
10     console.log("第三段", value3);
11     yield
12     const value4 = 400
13     console.log("第四段", value4);
14     yield
15 }
16 const generator = foo(5)
17     //第一段 生成器是一个特殊的迭代器
18     //1:生成器传递参数
19 console.log("返回值1", generator.next());
20 //第二段代码 
21 console.log("返回值2", generator.next(10));
22 console.log("返回值3", generator.next(0.5));
23 console.log("返回值4", generator.next());

 

 生成器的return和throw方法

return----return传值后,这个生成器就会结束,之后调用next不会继续生成值了

function* foo(num) {
    const value1 = 100 * num
    console.log("第一段", value1)
        //给第二段传参
    const n = yield value1
    const value2 = 200 * n
    console.log("第二段", value2);
    const n2 = yield 2
    const value3 = 300 * n2
    console.log("第三段", value3);
    yield 123
    const value4 = 400
    console.log("第四段", value4);
    yield 456
}
const generator = foo(5)
console.log(generator.next());
//提前终止生成器函数代码继续执行
console.log(generator.return(15));
console.log(generator.next(10));
console.log(generator.next(0.5));

 

 throw----抛出异常后可以在生成器函数中捕获异常

 1 function* foo() {
 2     const value1 = 100
 3     console.log(value1);
 4     try {
 5         yield 1000
 6     } catch (err) {
 7         console.log("内部捕获异常:", err);
 8 
 9     }
10     const value2 = 200
11     console.log(value2);
12     yield 200
13 }
14 const generator = foo()
15 console.log(generator.next());
16 generator.throw("抛出异常")
17 console.log(generator.next());

 

标签:console,log,generator,生成器,yield,const
来源: https://www.cnblogs.com/tyysf/p/16099791.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有