ES6之promise与class

48 阅读5分钟

promise相关,参考如下:

分类单词描述
Promise简介PromisePromise是异步操作的一种解决方案,可以解决回调地狱问题 使用时,需要实例化,例: new Promise(()=>{})
Promise的状态pendingPromise的未完成状态
Promise的状态fulfilledPromise的成功状态
Promise的状态rejectedPromise的失败状态
Promise的方法resolve调用该方法,Promise的状态会由pending变成fulfilled,表示成功 示例: new Promise((resolve,reject)=>{ resolve() })
Promise的方法reject调用该方法,Promise的状态会由pending变成rejected,表示失败 示例: new Promise((resolve,reject)=>{ reject() })
Promise的方法then1、有两个回调函数;当Promise状态变化时,会执行对应的回调函数: Promise状态由pending->fulfilled时,执行then的第一个回调函数 Promise状态由pending->rejected时,执行then的第二个回调函数 2、then方法执行后,会返回一个新的Promise对象。默认返回的是成功状态的Promise对象
Promise的方法catch1、用来处理rejected(失败)状态 2、建议在Promise对象后面写上catch方法,这样可以处理Promise内部发生的错误
Promise的方法finally当Promise状态发生变化时,不论状态如何变化,都会执行(了解即可)
Promise的简写形式Promise.resolve()成功状态Promise的一种简写形式,等价于(了解即可): new Promise(resolve => { resolve() })
Promise的简写形式Promise.reject()失败状态Promise的简写形式,等价于(了解即可): new Promise(reject => { reject() })
Promise的其他方法Promise.all()1、关注多个Promise对象的状态变化 2、传入多个Promise实例,会返回一个新的Promise实例。 3、Promise.all()的状态变化与传入的多个Promise实例对象的状态有关: 多个实例的状态都变成resolved,Promise.all()的最终状态才会变成resolved 只要有一个实例的状态变成rejected,Promise.all()的最终状态就变成rejected
Promise的其他方法Promise.race()1、关注多个Promise对象的状态变化 2、传入多个Promise实例,会返回一个新的Promise实例。 3、Promise.race()的状态取决于第一个完成的Promise实例对象。 如果第一个完成的实例成功了,Promise.race()就是成功的;如果第一个完成的实例失败了,Promise.race()就是失败的(了解即可)
Promise的其他方法Promise.allSettled()1、关注多个Promise对象的状态变化 2、传入多个Promise实例,会返回一个新的Promise实例。 3、Promise.allSettled()的状态与传入的Promise实例状态无关。它永远都会执行成功的回调函数。并且记录各个Promise实例的表现(了解即可)

当面试官问你Promise的时候, 他究竟想听到什么?

 1、 认识promise: promise是异步操作的一种解决方案

 2、 什么时候使用promise: Promise 一般用来解决层层嵌套的回调函数(回调地狱callback hell) 的问题

 3、 实例化构造函数生成实例对象

 4、 Promise有3种状态, - 开始是pending(未完成)
     执行resolve, 变成fulfille(resolved), 已成功
     执行reject, 变成rejected, 已失败
     Promise的状态一旦变化,就不会再改变了

class相关,参考如下: |分类 | 单词 | 描述 | ----------- | ----- ------- | |class类 | class | 定义类的关键字 class类 | constructor | class中的构造方法,可以省略不写; 实例化时,构造函数中的代码会执行,常用来初始化。
class类 | new | 实例化构造函数或者类的关键字
class类 | this | 在constructor,this指向实例 在静态方法中,this指向类
class类 | static | 声明静态属性和静态方法,其中定义静态属性还处于提案中,了解即可 class类 | extends | 继承,子类继承父类时,可以使用该关键字。
class类 | super | 作为函数使用: 1、继承时,在子类的constructor中,super指代父类的 构造函数。 2、作为函数使用时,super虽然代表父类的构造方法,但是内部的this指向子类的实例 作为对象使用: 1、在子类的构造方法(constructor)或一般方法中使用, super代表父类的原型对象。 定义在父类实例上的属性或方法,无法通过super调用;通过super调用父类的方法时,方法内部的this指向当前的子类的实例 2、在静态方法中使用,super指向父类。通过super调用父类的方法时,方法内部的this指向当前的子类,而不是子类的实例

二、class的属性和方法

1、实例属性

方法就是值为函数的特殊属性

 class Person{

        age = 0;

        sex = 'boy';

        play = function () {

        return this.play;

        }
 }

2、静态方法:类的方法

3、静态属性:类的属性

三、私有属性和方法

   1、为什么需要私有属性和方法

   公有的属性和方法可以被外界修改,造成意想不到的错误

  2、模拟私有属性和方法

 (1)_开头表示私有

 (2)将私有属性和方法移出类

  3、父类原型上的属性,是指定义在父类prototype中的属性,

   可以通过"Parent.property.age=10"的方式添加原型属性。

   但是一般通常会将属性定义在实例中,而将方法定义在原型中(有利于性能)。

   这种定义color属性的方式是直接定义在实例上的,

   而playShow方法是定义在原型上的(相当于Parent.prototype.playShow=function(){})

今日寄语: 最宝贝的收获,有时候就是你爱的人,脸上露出笑容。