一、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函数会中断执行