首页 > 其他分享 >es6——生成器函数

es6——生成器函数

时间:2022-08-27 23:00:16浏览次数:82  
标签:es6 console log iterator 生成器 yield next let 函数

文章结构

  生成器函数的定义与使用

  给生成器函数传参

  给生成器函数异步传参

  生成器函数的应用场景

    解决回调地域

 

 1  //生成器函数的定义与使用
 2         function *fn(){
 3             //yield类似于断电
 4             console.log(111);
 5             yield `第一段`
 6             console.log(222);
 7             yield `第二段`
 8             console.log(333);
 9             yield `第三段`
10             console.log(444);
11         }
12 
13         //调用
14         let iterator = fn();
15         //每次调用next会执行生成器函数中yield段代码,并且返回包含yield的值的对象
16         console.log(iterator.next());
17         console.log(iterator.next());
18         console.log(iterator.next());
19         console.log(iterator.next());
20 
21         for(let i of fn()){
22             console.log(i);
23         }

给生成器函数传参

 1        function * fn(arg){
 2         console.log(arg);
 3         let one = yield 1;
 4         console.log(one);
 5         let two = yield 2;
 6         console.log(two);
 7         let three = yield 3;
 8         console.log(three);
 9        }
10 
11        //执行获取迭代器对象
12        let iterator = fn('AAA');
13        iterator.next();
14        //从第二次开始next的参数会成为yield的返回值
15        iterator.next('BBB');
16        iterator.next('CCC');
17        iterator.next('DDD');

给生成器函数异步传参

 1 function getname() {
 2     setTimeout(() => {
 3         let name = 'zhangsan';
 4         iterator.next(name);
 5     }, 1000)
 6 }
 7 
 8 function getdata() {
 9     setTimeout(() => {
10         let data = 'data';
11         iterator.next(data);
12     }, 2000)
13 }
14 
15 function gettime() {
16     setTimeout(() => {
17         let time = 'time';
18         iterator.next(time);
19     }, 3000)
20 }
21 
22 function* fn() {
23     getname();
24     // 可以使用一个变量去接收yield的返回值,yield返回上一次调用iterator.next()的参数
25     let one = yield;
26     console.log(one);
27     getdata();
28     let two = yield;
29     console.log(two);
30     gettime();
31     let three = yield;
32     console.log(three);
33 }
34 
35 let iterator = fn();
36 iterator.next();

生成器函数的应用场景

解决回调地域

 1 setTimeout(() => {
 2             console.log(111);
 3             setTimeout(() =>{
 4                 console.log(222);
 5                 setTimeout(()=>{
 6                     console.log(333)
 7                 },3000)
 8             },2000)
 9         },1000)
10 
11         function fn1(){
12             setTimeout(()=>{
13                 console.log(111);
14                 iterator.next();
15             },1000)
16         }
17 
18         function fn2(){
19             setTimeout(()=>{
20                 console.log(222);
21                 iterator.next();
22             },1000)
23         }
24 
25         function fn3(){
26             setTimeout(()=>{
27                 console.log(333);
28                 iterator.next();
29             },1000)
30         }
31 
32         function *fn(){
33             fn1();
34             yield;
35             fn2();
36             yield;
37             fn3();
38             yield;
39         }
40 
41         let iterator = fn();
42         iterator.next();

 

标签:es6,console,log,iterator,生成器,yield,next,let,函数
From: https://www.cnblogs.com/lzx-cm/p/16629266.html

相关文章

  • qsort函数
    #define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>#include<stdlib.h>#include<string.h>intcmp(void*p1,void*p2){ return*(int*)p1-*(int*)p2;//转换......
  • 【C标准库】详解feof函数与EOF
    创作不易,多多支持!再说此函数之前,先来说一下EOF是什么EOF,为EndOfFile的缩写,通常在文本的最后存在此字符表示资料结束。在C语言中,或更精确地说成C标准函式库中表示文件......
  • 函数的作用
    以下选项中,属于函数的作用的是(BCD)A.提高代码执行速度B.复用代码C.增强代码可读性D.降低编程复杂度答案解析:函数的作用是复用代码、增强代码可读性、降低编程复杂度,而......
  • Js 函数eval() 用法记录
    js函数eval()用法记录问题描述:遇到一串数据responseText,在浏览器中使用console函数输出responseText这个字段整体的时候,eg:console.log(“—————–responseText—-“......
  • js 函数的参数长度问题
    js函数的参数长度问题_Jamie_java的博客-CSDN博客_js传参数有长度限制 https://blog.csdn.net/baidu_27062827/article/details/52276635js函数,如果传入参数的长度太长......
  • R语言中lapply函数
     相对于apply,lapply主要应用于list??返回list?? 001、应用于数据框dat<-data.frame(a=c(6,3,5),b=c(2,6,8),c=c(5,2,1))##测试数据框datlap......
  • seurat 单细胞数据分析中 VizDimLoadings 函数
     前期处理:https://www.jianshu.com/p/fef17a1babc2#可视化对每个主成分影响比较大的基因集001、dat<-pbmc[["pca"]]@feature.loadings......
  • MySQL源码分析之SQL函数执行
    1.MySQL中执行一条SQL的总体流程2.SQL函数执行过程1.MySQL中执行一条SQL的总体流程一条包含函数的SQL语句,在mysql中会经过:客户端发送,服务器连接,语法解析,语句执行的......
  • 开始setInterval 停止clearInterval 函数
    <!DOCTYPEhtml><html> <head> <metacharset="utf-8"> <title>setInterval使用方法</title> <styletype="text/css"> .com{ width:200px; height:30px; ......
  • Vite + Vue3 + Pinia + es6 + TypeScript 搭建项目
    vite中文参考文档:https://vitejs.cn/guide/#scaffolding-your-first-vite-project执行 npminitvite@latest步骤如下图:下载依赖npmi 启动项目:npmrundev ......