1.Promise解决回调地狱
在JavaScript中,难免会遇到异步访问的场景,比如打开文件,访问数据库等等。如果不做好异步控制,会导致意外结果(比如 返回值还没返回就想调用)因此,一种典型的做法是:
代码少的时候还可以 但是一但代码多 改错时就会很麻烦所以 基于当时的困境,有人提出了Promise
一个promise对象then之后还是promise,因此可以一直then下去,从而实现嵌套回调。
输出结果
2异步async 与 等待await
定义一个say 函数
用async方法定义该函数 async装饰的函数返回的是一个promise对象
只能在async函数里面使用
await 当函数遇到await 等待await结果,再往下执行
输出结果
3 Symbol
表示独一无二的值,最大的用法是用来定义对象的唯一属性名。
Symbol 函数栈不能用 new 命令,因为 Symbol 是原始数据类型,不是对象。可以接受一个字符串作为参数,为新创建的 Symbol 提供描述,用来显示在控制台或者作为字符串的时候使用,便于区分。
4 Symbol.iterator迭代器
1可迭代对象都拥有迭代器(可以被for of 遍历对象都是可迭代对象) String Array Set Map
通过next方法进行迭代 一直往下执行直到
itr.next()
5 生成器
1 普通函数前面添加 *
2 通过yield关键来控制生成
3 最终函数执行 返回一个可迭代元素
4 生成器案例 生成2-101 间隔为2的数字元素
6 代理prxoy
1 对原对象操作的劫持
2 o.msg 会执行get方法
o.msg=“abc” 会执行set方法
我们可以在get和set方法里面做一些判断劫持等其他操作
3 console.log(o.msg)
获取o的msg值 执行o代理里面的get方法 return obj["msg"]
o.msg = "abc"
设置o的msg值 执行o代理的set方法
obj["msg"] = "abc"