一,Promise
promise的三种状态
1,pending:刚刚创建一个Promise实例的时候,表示初始状态;
2,fulfilled:resolve方法调用的时候,表示操作成功;
3,rejected:reject方法调用的时候,表示操作失败;
promise的基本用法
//用new关键字创建一个Promise实例 let pro = new Promise(function(resolve,reject){ let condition = true; if(condition){ resolve('操作成功');//调用操作成功方法//状态:pending->fulfilled }else{ reject('操作异常');//调用操作异常方法 //状态:pending->rejected } }); //用then处理操作成功,catch处理操作异常 pro.then(function (res) { console.log(res) //操作成功的处理程序 }).catch(function (error) { console.log(error)//操作失败的处理程序 });
promise实例的两种方法
1,then方法
参数是两个函数,第一个用于处理操作成功后的业务,第二个用于处理操作异常后的业务。
2,catch方法
catch只接受一个参数,用于处理操作异常后的业务。
Promise的两种方法
1,all方法
当几个pro实例对象都返回成功或者都失败时才会调用后面的回调方法
var pro1 =new Promise(...) var pro2 =new Promise(...) Promise.all([pro1,pro2]).then(function(result){ console.log(result); });
2,race方法
当几个实例对象有一个发生变化时(不论是成功还是失败,只要变化了)就会调用后面函数,之后其他对象再发生变化也不会再进行调用
var pro1 =new Promise(...) var pro2 =new Promise(...) Promise.race([pro2,pro1]).then(function(result){ console.log(result); }).catch(function(error){ console.log(error); });
promise的好处是可以更合理的处理异步操作,避免回调地狱
二,类
类的基本组成
类名 类体 类体中可以写入属性和方法
类由class关键字声明,有构造器方法,constructor(){...},构造器方法的this指向实例化对象
class Animal { constructor(name){ this.name=name;} getName(){ return 'this is a'+this.name;}} var dog = new Animal("狗"); cosole.log(dog.name)//"狗" consile.log(dog.getName())//this is a 狗
实例对象的创建有几个要注意的事项:
1,必须使用new创建字来创建类的实例对象
2,先声明定义类,再创建实例,否则会报错
类的继承
class Dog extends Animal {//子类的继承 construcor(name,color){//构造方法 super(name); this.color=color; }}
使用super有几个要注意的事项:
1,子类必须在constructor方法中调用super方法
2,调用super( ),才可以使用this,否则报错
三,module模块
导入Import作为一个模块,可以根据需要,引入其他模块的提供的属性或者方法,供自己模块使用。
导出Export作为一个模块,它可以选择性地给其他模块暴露(提供)自己的属性和方法,供其他模块使用。
基本案例
var name="前端君"; var age =25; var say=function(){ console.log("say hello")} export{name,age,say}
import{name,age,say} from "./moduleB.js"
cosole.log(name)
cosole.log(age)
say()
让导出的变量改变名字
import{name as myname} from "./module.js"
console.log(myname)
整体导入
import * as obj from "./module.js" console.log(obj.name)//前端君 console.log(obj.age)//25 obj.say()//say hello
默认导出export default
export default function (){ console.log("i am default fn") } import sayDefault from "./module.js" sayDefault();
导出的变量都是不可修改的,只有对象可以修改
导入不存在的变量,值为undefined。