ES6简单入门(重点:Promise)

箭头操作符

ES6中新增的箭头操作符=>,简化了函数的书写,操作符的左边为输入的参数,而右边则是进行操作以及返回的值

/**
 * 箭头操作符
 * @type {number[]}
 */
var array = [2,3,1];
//传统方式
array.forEach(function (v, i, a) {
    console.log(v);
});
//Es6写法
array.forEach(v =>console.log(v));

类的支持

ES6中添加了class关键字,JS本身就是面向对象的,提供类的支持后,对象的创建,继承更加只管了。

增强的对象字面量

  1. 可以在对象字面量中定义原型
  2. 定义方法可以省略function
  3. 直接调用父类方法
var human = {
  eat(){
      console.log("人吃饭");
  }
};
var worker = {
    __proto__: human,//这里不能用prototype,因为普通对象没有构造方法
    company:'freelancer',
    work(){
        console.log('working');
    }
};
//测试
worker.work();
worker.eat();

ES6之Promise(重点)

ES6中的Promise的出现就使得异步变得非常简单。promise中的异步是这样的:

* 每当我需要执行一次异步操作的时候,我都需要new一个promise对象

* 每一个异步操作的Promise对象都需要设定一个成功执行的条件和成功的回调、一个失败的条件和失败的回调

* Promise对象可通过执行then()方法获得成功的回调信息

* Promise对象可通过执行catch()方法捕获失败的回调信息(当不执行catch方法时,若异步操作失败会报错)

案例演示:

/**
 * 执行成功效果:
 * 做饭 --> 吃饭 --> 洗碗
 * @type {number}
 */

//改变参数值(0或1)可测试不同效果
let isCook = 1;
let isEat = 1;
let isWash = 1;

//做饭
let cook = (resolve,reject)=>{
    console.log("愉快的做饭,打火锅");
    setTimeout(()=>{
        if (isCook == 1){
            resolve({status:1,msg:'做饭完毕'});
        } else {
            reject({status: 0,msg: '做饭糊了,没饭吃'});
        }
    },2000);
};

//吃饭
let eat = (resolve,reject)=> {
    setTimeout(() => {
        if (isEat == 1) {
            resolve({status: 1, msg: '吃完饭了'});
        } else {
            reject({status: 0, msg: '不能吃饭,回去加班'});
        }
    }, 2000);
};

//洗碗
let wash = (resolve,reject)=>{
    console.log("匆忙的洗碗");
    setTimeout(()=>{
        if (isWash == 1){
            resolve({status:1,msg:'洗好碗,继续加班'});
        } else {
            reject({status: 0,msg: '还没洗碗'});
        }
    },2000);
};

//使用Promise过程
new Promise(cook).then((res)=>{
    if (res.status == 1){
        console.log(res.msg);
        return new Promise(eat);
    } else {
        console.log(res.msg);
    }
}).then((res)=>{
    if (res.status==1){
        console.log(res.msg);
        return new Promise(wash);
    } else {
        console.log(res.msg);
    }
}).then((res)=>{
        console.log(res.msg);
}).catch((err)=>{
    console.info(err.msg);
});

总结:

       定义方法名,省略掉function关键字(参数为resolve,reject,分别返回一个Promise对象),使用‘=>’替代,在方法体内根据判断条件处理,然后使用resolve或reject返回。其他方法也是如此。
        最后使用是new Promise(方法名),在then方法中的参数为调用方法中resolve的返回值,而在catch方法中接收的是reject的返回值。根据返回值可以进行相关操作。

感谢阅读~

猜你喜欢

转载自blog.csdn.net/weixin_37704921/article/details/81294623