您好,欢迎访问代理记账网站
  • 价格透明
  • 信息保密
  • 进度掌控
  • 售后无忧

2021-06-02ES6中Symbol类型 迭代器iterator异步编程使用场景

1.Symbol的基本使用
symbol表示独一无二的值,类似于字符串的数据类型
特点:1)symbol的值是唯一的,用来解决命名冲突的问题
2)symbol值不能与其他数据进行运算
3)symbol定义的对象不能用for…in… 进行遍历,但可以使用reflect.ownKeys来获取对象的所有键名
数据类型:USONB
U:undefiend
S;string,symbol
O:object
N:null,number
B:boolean
应用场景:
在这里插入图片描述
在这里插入图片描述
迭代器(iterator):是一种接口,为各种不同数据结构提供统一的访问机制
在这里插入图片描述
在这里插入图片描述
生成器:是一种特殊的函数,异步编程
在这里插入图片描述
生成器函数的参数传递:
next()方法可以传入实参的,传参将作为上一个yield的返回结果

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<script>
//异步编程 1s后控制台输出111,接着2s后输出222,3输出333
    function one(){
        setTimeout(()=>{
            console.log(111);
        iterator.next();
        },1000)}
function two(){
    setTimeout(()=>{
        console.log(222);
    iterator.next();
},2000)}
function three(){
    setTimeout(()=>{
        console.log(333);
    iterator.next();
},3000)}

    function* gen(){
    yield one();
    yield two();
    yield three();
}
    let iterator=gen();
    iterator.next();
</script>
</body>
</html>

在这里插入图片描述
2.获取信息

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<script>
//模拟获取 用户数据  订单数据  商品数据
    function getUsers(){
        setTimeout(()=>{
            let data="用户信息";
        iterator.next(data);
        },1000)
    }
function getOrders(){
    setTimeout(()=>{
        let data="订单信息";
    iterator.next(data);
},1000)
}
function getGoods(){
    setTimeout(()=>{
        let data="商品信息";
    iterator.next(data);
},1000)
}
    function* gen(){
    let users=yield getUsers();
    console.log(users);
    let order=yield getOrders();
    console.log(order);
    let goods=yield getGoods();
    console.log(goods);
}
    let iterator=gen();
   iterator.next();
</script>
</body>
</html>

在这里插入图片描述


分享:

低价透明

统一报价,无隐形消费

金牌服务

一对一专属顾问7*24小时金牌服务

信息保密

个人信息安全有保障

售后无忧

服务出问题客服经理全程跟进