一、promise

1、

let a  = 1;

let promise = new Promise(function(resolve,reject){

//resolve ,成功调用

//reject ,失败调用

  if(a==10){

    resolve('成功');

  }else{

    reject(‘失败’);

  }

});

promise.then(res=>{

  console.log(res)

},err=>{

  console.log(err)

});

输出:失败

2、可以直接这么用:

new Promise().then(res=>{

}).catch(err=>{

})

catch和err一样的

3、Promise.resolve('aaa');等价于

let a = new Promise(resolve=>{

  resolve('成功');

})

reject一样的

4、Promise.all([P1,P2,P3]),把Promise打包,扔到一个数组里面,打包完还是一个promise,必须确保所有的promise对象,都是resolve状态,都是成功状态

let P1 = Promise.resolve('aaa');

let P2 = Promise.resolve('bbb');

let P3 = Promise.resolve('ccc');

Promise.all([P1,P2,P3]).then(res=>{

  let [res1,res2,res3] = res

  console.log(res1,res2,res3)

})

5、Promise.race([P1,P2,P3]) 里面只要有一个成功或者是resolve就会返回

 二、模块化

导出模块: export 东西

导入模块: 1.import ; 2.import './modules/1.js;  3. import {a as a,banana,c} from './modules/2.js'  ;  4. import * as modTwo from './modules/2.js';

使用模块: <script type=”module“></script>

important 特点: 可以是绝对路径,亦可以是相对路径; import模块只会导入一次,无论你引用多少次;import‘./modules/1.js',如果这么用相当于引入文件;有提升效果,import会自动提升到顶部首先执行;到处去木块内容,如果里面有定时器更改,外面也会改动,不想Common规范缓存;

三、类

1.父类

class Person{

  constructor(name,age){

    console.log(`构造函数 ${name},${age}`);

  }

showname(){

  return `名字为${this.name}`

}

}

let p  = new Person('zhangsan ','18');

console.log(p);

2.子类

class Student extends Person{

  constructor(name,age){

    super(name,age) 

  } 

}

3.调用

let stu = new Student('张三’,'18');

console.log(stu.showname());

四、async  await  

async function fn(){

let f1 = await readFile(aa.txt);

console.log(f1.toString());

}

async特点:

1、await只能放到async函数中

2、相比genrator语义化更强

3、await后面可以是promise对象,也可以数字、字符串、布尔

4、async函数返回是一个promise对象

5、只要await语句后面Promise状态变成reject ,那么整个async函数会中断执行