ES6-04 Promise设计 类 模块

一,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。

posted @ 2020-08-06 20:04  帅气如我66  阅读(145)  评论(0编辑  收藏  举报