Promise解决异步处理回调地狱

Promise本身是一个构造函数,是为了解决异步处理回调地狱而产生的,可以进行链式调用

Promise的三种状态:

        1、pending(等待状态):初始状态,既不是成功,也不是失败状态。
        2、fulfilled/resolved(已解决):操作成功完成的状态。
        3、rejected(已拒绝):操作失败的状态。

Promise语法:

        romise是一个构造函数,使用new关键字创建一个Promise对象,构造函数的参数是一个回调函数,该回调函数有两个参数,分别为resolve(把状态由等待转为已解决),reject(把状态由等待转为已拒绝)。

Promise事例方法:

        .then()方法:用于指定当Promise成功时执行的回调函数。

        .catch()方法:用于指定当Promise失败时执行的回调函数。

        .finally()方法:最后无论成功还是失败最后一定会执行的

Promise静态方法:

        1、Promise.resolve()方法:将状态改为成功,

        2、Promise.reject()方法:将状态改为失败,

        3、all()方法:解决并发的异步操作,实现异步请求并发的方法,所有并发的请求全部成功才算成功,会使用then方法把所有请求传过来的参数包裹在一个数组中,只要有一个失败就算失败。

        4、rece() 赛跑,该方法是只要有一个异步请求有了结果(不论成功失败,就把该结果作为promise的返回值。

Promise的操作:

下面我们来实现一个简单的异步操作,模拟如何使用Promise来处理异步操作的成功和失败情况。

        new Promise((resolve,reject) => {
            setTimeout(() => {//写一个异步方法模拟成功或失败
                if(Math.random() > 0.5){
                    resolve("异步请求成功")
                }else{
                    reject('异步请求失败')
                }
            },2000)
        }).then(res => {
            console.log(res);
        }).catch(err => {
            console.log(err);
        })

async和await:

         ES2017 标准引入了 async 函数,使得异步操作变得更加方便

返回 Promise 对象

        async 函数是一个返回 Promise 对象的函数。

        async 函数内部 return 语句返回的值,会成为 then 方法回调函数的参数。

await 命令:

        await 命令后面是一个 Promise 对象,返回该对象的结果。如果不是 Promise 对象,就直接返回对应的值。

使用注意点:

  • await 命令后面的 Promise 对象,运行结果可能是 rejected ,所以最好把 await 命令放在 try...catch 代码块中。
  • 多个 await 命令后面的异步操作,如果不存在继发关系,最好让它们同时触发。
  • await 命令只能用在 async 函数之中,如果用在普通函数,就会报错。
  • async 函数可以保留运行堆栈。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值