Promise、数组的升维与降维

promise介绍

ES6教程传送门:http://es6.ruanyifeng.com/#docs/promise

Promise是什么?

Promise是一个构造函数,用于创建Promise对象
Promise对象:可以理解为一个处理异步操作的容器
promise本质 不是控制异步代码的执行顺序(无法控制) , 而是控制异步代码结果处理的顺序
Promise作用:解决回调地狱
回调地狱:异步回调层层嵌套

promise使用

使用流程
1.创建promise实例对象

 let p = new Promise( (resolve,reject)=>{
    //异步操作 } )

2.调用实例对象的then方法

 p.then(data=>{
    //处理成功数据 } , err=>{
    //处理失败结果 })

promise有三种状态

  • pending(进行中)
  • fulfilled(已成功)
  • rejected(已失败)

Promise状态改变只有两种情况(过程不可逆)

  • 从pending(进行中)变为fulfilled(成功)
  • 从pending(进行中)变为rejected(失败)

注意点

  • Promise对象在创建的时候,里面的异步就会立即执行
  • 不要在创建promise的时候处理异步结果,应该调用resolve()或者reject()交给then()方法来处理
  • promise解决回调地狱 : 在上一个promise的then方法中返回下一个promise实例对象

需求:依次读取abcd四个文件

const fs = require('fs');

//Promise是一个构造函数,用于创建promise实例

//(1)调用Promise构造函数,生成promise实例对象
/* 
参数:回调函数  (resolve,reject)=>{
     //你想要的异步操作 }
    resolve : 完成回调
    reject  : 失败回调 
*/
let p1 = new Promise((resolve, reject) => {
   

    //异步操作: 读取文件a
    fs.readFile(`${
    __dirname}/data/a.txt`, 'utf8', (err, data) => {
   
        if (!err) {
   //成功
            /* 
            (1)resolve:执行then方法里面的第一个函数
            (2)resolve底层原理:修改promise状态从pending(进行中)变为fulfilled(成功)
            */
            resolve(data);
        } else {
   //失败
            /* 
            (1)reject:执行then方法里面的第二个函数
            (2)rreject底层原理:修改promise状态从pending(进行中)变为rejected(失败)
            */
            reject(err);
        }
    });
});

let p2 = new Promise((resolve, reject) => {
   
    //异步操作: 读取文件a
    fs.readFile(`${
    __dirname}/data/b.txt`, 'utf8', (err, data) => {
   
        if (!err) {
   //成功
            resolve(data);

        } else {
   //失败
            reject(err);
        }
    });
});

let p3 = new Promise((resolve, reject) => {
   
    //异步操作: 读取文件a
    fs.readFile(`${
    __dirname}/data/c.txt`, 'utf8', (err, data) => {
   
        if (!err) {
   //成功
            resolve(data);
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值