关于Promise原型方法async和await

一,Promise简介

对于学习es6的难点之一,promise可以作为首选,因为作为es5的写法中回调写法问题,在数据量特点大的情况下,很可能出现回调地狱的情况,即当某个异步操作需要等待之前的异步操作执行完才能执行,就会使陷入无限的嵌套中。
而对于ES6,新出的promise,它是属于一个微队列,对于js引擎而言,是优先执行微队列的任务的,在使用promise时能较大的程度上解决回调问题,但也不是能完全的解决,所谓的回调地狱,在任务多的情况下promise也不能完美去解决这个问题,只是缓解了异步回调问题。
对于promise的使用,之前的博客有说过:
Promise介绍

二,async和await

对于async和await这两个关键字是出于优化promise写法而出现的,因为书写promise的比较的麻烦,后出现了这两个关键字
原生Promise的书写

<script>
        //对于书写原生的promise
        var pro = new Promise( (resolve , reject) =>{
            //成功
            resolve ('123');
            //失败
            reject ('失败');
        })
        pro.then(data =>{
            //成功返回输出
            console.log(data);
        },err =>{
            //失败返回输出
            console.log(err);
        })
    </script>

相对于原生的promise的书写,async更加的简化了这的操作

<script>
        async function text(){
             //成功返回
             return 123;
             //失败返回、
             throw '失败';
        }
        async function text1(){
            //声明接收text返回的值
            //await起到了等待的作用
            var result = await text();
            //输出
            console.log(result); 
        }
        //执行text1
        text1();
    </script>

通过async和await的连贯使用极简了promise的写法

三,async和await实现promise的状态变化问题

对于,async返回的promise的对象,必须要等到内部的await全部执行完毕后promise对象才能执行完毕后,才发生状态变化,除非遇到return语句返回,或者是抛出错误。
也即是async函数内部异步执行完,才能执行then方法的回调函数。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值