知识点整理:es6

ES6新特性 

  1. let变量,const常量,有块级作用域,let,const不能重复声明一个已经声明过的变量,不管使用什么声明的(let,const,var),let声明的变量可以重新赋值,const不允许重新赋值,所以,let可以先声明后赋值,但是const必须声明且赋值。还有一点需注意:
    const 阻止的是对于变量绑定的修改,而不 阻止对成员值的修改。const a = 1;此时对a的再次赋值就会报错;const person = {name:'1'},person.name='2'不会报错,但是person={name:'2'}就会报错
  2. - 箭头函数,函数内外的this指向是一致的
  3. - 模板字符串,反引号 **` ** 标识,可以有空格(let age=10;let str=`你好,我已经${age}岁了`)
  4. - 解构赋值,数组中可以嵌套,可以有空值,可以有剩余运算符
    let node = { type: "Identifier", name: "foo" }; 
    let { type, name } = node; 
    console.log(type); // "Identifier" 
    console.log(name); // "foo"
    let colors = [ "red", "green", "blue" ];
     let [ firstColor, secondColor ] = colors;
     console.log(firstColor); // "red" 
    console.log(secondColor); // "green"

     

  5. - import引入和export的导出
  6. - ...展开符,可以将数组或者对象里面的值展开,也可以将多个值收集为一个变量
  7. - async,await同步和异步方法
  8. - promiss语法
  9. - set数组去重
let arr=[12,43,23,43,68,12];
let item=[...new Set(arr)];
console.log(item);//[12,43,23,68]

 

特别promise封装axios,promise,setTimeout,fn,宏任务和微任务,

回调地狱

第一种使用ES6中的Promise,中文翻译过来承诺,意思是在未来某一个时间点承诺返回数据给你。

但是如果数据多的,依赖多的情况下,还是会产生回调地狱的既视感,那这时候就用到了es7的async,await了

promise

原理:

  • 在Promise的内部,有一个状态管理器的存在,有三种状态:pending、fulfilled、rejected。    
  • (1) promise 对象初始化状态为 pending。    
  • (2) 当调用resolve(成功),会由pending => fulfilled。    
  • (3) 当调用reject(失败),会由pending => rejected。  
  • 需要记住的是注意promsie状态 只能由 pending => fulfilled/rejected, 一旦修改就不能再变。

原文链接:https://blog.csdn.net/HannaLh/article/details/106151149

特点:

  • promise是一个对象,对象和函数的区别就是对象可以保存状态,函数不可以(闭包除外)一旦状态改变,就不会再变,任何时候都可以得到这个结果
  • 对象的状态不受外界影响,只有pending,fulfilled,rejected三种状态
  • 代码风格,容易理解,便于维护
  • 多个异步等待合并便于解决

缺点:

  • 无法取消Promise,一旦新建它就会立即执行,无法中途取消
  • 如果不设置回调函数,Promise内部抛出的错误,不会反应到外部
  • 当处于pending状态时,无法得知目前进展到哪一个阶段(刚刚开始还是即将完成)。

Promise有三种状态:pending/reslove/reject 。pending就是未决,resolve可以理解为成功,reject可以理解为拒绝。
同时Promise常用的三种方法

  1. then 表示异步成功执行后的数据状态变为reslove
  2. catch 表示异步失败后执行的数据状态变为reject
  3. all表示把多个没有关系的Promise封装成一个Promise对象使用then返回一个数组数据。
  4. resolve成功的回调
  5. reject失败的回调

Promise.all() 批量执行

Promise.all([p1, p2, p3])用于将多个promise实例,包装成一个新的Promise实例,返回的实例就是普通的promise
它接收一个数组作为参数
数组里可以是Promise对象,也可以是别的值,只有Promise会等待状态改变
当所有的子Promise都完成,该Promise完成,返回值是全部值得数组
有任何一个失败,该Promise失败,返回值是第一个失败的子Promise结果

Promse.race

Promse.race就是赛跑的意思,意思就是说,Promise.race([p1, p2, p3])里面哪个结果获得的快,就返回那个结果,不管结果本身是成功状态还是失败状态。

Promise.allSettled()

Promise全部处理完成后我们可以拿到每个Promise的状态, 而不管其是否处理成功.

以上引用:https://segmentfault.com/a/1190000020034361

阮一峰老师:https://es6.ruanyifeng.com/#docs/promise

事件循环机制,promise的使用,

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值