本文共 1630 字,大约阅读时间需要 5 分钟。
一、认识Promise
用于处理异步操作,成功了就执行成功的操作,失败了就捕获错误或者停止后续操作。二、基本语法
new Promise(function(resolve,reject){ if(success){ resolve(); // 成功将调用resolve()方法 }else{ reject(); // 成功将调用reject()方法 } })有三种状态:
pending:初始状态,也称为未定状态,就是初始化Promise时,调用executor执行器函数后的状态。
fulfilled(resolvted):完成状态,意味着异步操作成功。 rejected:失败状态,意味着异步操作失败。有两种状态可以转化,即
操作成功:pending -> fulfilled
操作失败:pending -> rejected状态转换是单向的,不可逆转的。
三、then()
它属于Promise的一个方法,它可以包含两个函数作为参数,用来处理操作在成功或失败的处理,可以链式调用。
Document
四、catch()
捕获异常,它替代了then()方法中的第二个参数,把异常相关的处理交给catch。
Document
五、all()
只有当状态全为fulfilled时,才执行resolve()方法,只要有一个不是fulfilled状态时,状态都将为rejected状态,将执行的是reject()方法。
Document
六、resolve()
Promise.resolve()接受一个参数值,可以是普通的值,也可以是具有then()方法的对象和Promise实例。正常情况下,它返回一个Promise对象,状态为fulfilled。但是,当解析时发生错误时,返回的Promise对象将会置为rejected态。
Document
七、reject()
Promise.reject()和Promise.resolve()正好相反,它接收一个参数值reason,即发生异常的原因。此时返回的Promise对象将会置为rejected状态。
Document
八、async函数
用async可以将普通函数转换为异步处理函数,通常结合await使用,遇到await必须等待await中的函数执行完成之后,才能执行后面的代码。
Document
九、ES6新增的数据类型:Symbol
ES5数据类型:number,string,boolean,undefined,null,object
symbol:表示独一无二的值。用在对象的属性中,可以避免与其它属性名发生冲突。
注意:
(1)Symbol不是一个对象,它是一个原始类型的值,不能用new构建。
(2)Symbol不能与其它类型的值进行比较,否则会报错。Document
十、Symbol作为属性名的使用
注意:
(1)Symbol作为属性名时,不能用.作为运算符,而是要用[]; (2)Symbol作为属性名时,这个属性为一个公共属性,不属于私有属性。十一、Symbol属性名的遍历
用Object.getOwnPropertySymbols()方法完成对Symbol属性名的遍历,而不能使用for...in或for...of进行遍历。
Object.getOwnPropertySymbols()返回的是一个数组,成员是当前对象的所有用作属性名的Symbol值。
Document
十二、Symbol.keyFor()方法
可以用它去获取已登记的Symbol类型值的key。
Document
转载地址:http://rfvrn.baihongyu.com/