ES6中对Promise的理解以及它的实例方法

79 篇文章 0 订阅
15 篇文章 0 订阅

1、Promise简介

Promise是异步编程的一种解决方案,解决多个串联的异步操作形参的回调地狱;Promise本身是同步的,他的then方法、catch方法和finally方法是异步的

Promise有3中状态:

  1. pending:进行中
  2. fulfilled:已成功
  3. rejected:已失败

特点:

  1. 状态不受外界的影响,只有异步操作的结果,决定当前是哪一种状态;
  2. 一旦状态改变就不会再变(pending–>fulfilled;pending—>rejected)

用法:

Promise是一个构造函数,用来生成Promise实例;

Promise构造函数接收一个函数作为参数,这个函数有两个参数(resolve,reject);

resolve:将Promise对象的状态从未完成变成成功,在异步操作成功的时候调用;

reject:将Promise对象的状态从未完成变成失败,在异步操作失败的时候调用;

const p = new Promise((resolve, reject) => {
    //resolve函数:将Promise对象的状态从未完成变成成功,在异步操作成功的时候调用
    resolve();//返回异步操作成功的结果,将结果作为参数传递出去
    //reject函数:将Promise对象的状态从未完成变成失败,在异步操作失败的时候调用
    reject();//返回异步操作失败的结果,将结果作为参数传递出去
})

2、Promise的实例方法

const p = new Promise((resolve, reject) => {
        setTimeout(() => {
            let time = new Date().getTime();
            if (time % 2 === 0) {
                resolve("成功的数据,time=" + time)
            } else {
                reject("失败的数据,time=" + time)
            }
        })
    })
  1. then( ): 当实例方法状态发生改变的时候的回调函数,返回的是一个新的Promise实例,也就是Promise可以链式书写的原因;
p.then((value) => {
            console.log("成功的", value);
        }), (reason) => {
            console.log("失败的", reason);
        }
  1. catch( ): 用来指定发生错误的回调函数,因为Promise的使用then来返回错误,具有冒泡性质,所以在开发中一般来说通过catch来替代then中第二个参数,用于捕获错误;
p.then((value) => {
        console.log("成功的", value);
    }).catch(value => {
            //catch( ):用来指定发生错误的回调函数
            console.log("失败的结果", value);
        })
  1. finally( ): 不管Promise对象最后的状态如何,都会执行的操作;
p.then((value) => {
        console.log("成功的", value);
    })/*, (reason) => {
            console.log("失败的", reason);
        }*/
        .catch(value => {
            //catch( ):用来指定发生错误的回调函数
            console.log("失败的结果", value);
        }).finally(()=>{
        console.log("不管Promise对象最后的状态如何,都会执行的操作");
    })

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值