zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    Paddle和PaddleNLP的简介与使用
    Hangfire 使用笔记 任务可以分离到别的项目中,无需重复部署Hangfire,通过API方式通信。
    DeprecationWarning: find_element_by_* commands are deprecated. Please use find_element() instead driver.find_element_by_class_name('content-wrapper-inner').click()
    图片反防盗链
    onsubmit=return false阻止form表单提交
    360极速浏览器安装vue-devtools插件
    Node.js安装详细步骤教程(Windows版)
    C/C++ for Visual Studio Code
    mysql 利用ibd文件恢复数据库
    解决 本地计算机上的MySQL80服务启动后停止的问题!!!
  • 原文地址:https://www.cnblogs.com/adylz111/p/13448617.html
Copyright © 2011-2022 走看看