promise与aysnc/await 解析

1.什么是promise

Promise是一个许诺器,它是异步编程解决方案之一,Promise里面通常放的是将来要执行的异步代码,这些代码执行完成后会有两种结果:成功或失败,因此Promise有三种状态:pending(初始状态)、fullfilled/resolve(成功状态)、rejected(失败状态),当在Promise内部调用了成功时的回调函数resolve()时则把Promise的pending初始状态转换成fullfilled/resove成功状态,同时执行定义在then()方法的第一个参数位置定义的成功时的回调函数;当在Promise内部调用了失败时的回调函数reject()时则把Promise的pending初始状态转换成reject失败状态,同时执行定义在then()方法的第二个参数位置或catch()方法中定义的失败时的回调函数;

Promise的特点

1)、Promise对象可以定义多个then()方法,但定义多外catch()方法没有意义;

2)、Promise内部的代码是以同步方式来执行的;

promise详解参考点击下面链接查看
promise解析

2.async 函数

ES2017 标准引入了 async 函数,它是一个关键字,被async修饰的函数称为async函数。

async函数的作用:async也是处理异步的,它是异步编程解决方案之一,async函数是以同步流程表达异步操作,它是对Promise的一种扩展,让异步更加方便,彻底解决回调嵌套

async的特点:

1)、async可以单独使用;

2)、async函数调用完成后返回的是Promise对象;

    <script>
        function demo() {
   

        }

        //console.log(demo(), 666); // undefined

        //定义async函数:
        async function test() {
   

        }

        console.log(test(), 1111); //返回Promise对象
    </script>

await的特点 :【重点】

1)、await不能单独使用,要与async一起使用;

2)、await可以直接处理Promise函数成功时回调函数的结果,不能直接处理Promise函数的失败时回调函数的结果,有两种解决办法:

第一种:在Promise对象后面调用catch()方法,在catch()方法中定义失败时的回调函数,代码如下:

 <script>   
   function mytest() {
   
            return new Promise((resolve, reject) => {
   
                setTimeout(() => {
   
                    // console.log('Hello WEB!!');
                    //需求:返回'Hello WEB!!'
                    if (0) {
   
                        // if (1) {
   
                        resolve('Hello WEB!!');
                    } else {
   
                        reject('这是错误信息');
                    }

                }, 3000);
            });

        }


        async function my() {
   
            console.log('开始执行');
            let data = await mytest().catch(err => {
   
                console.log(`出错了:
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值