web前端—前端三剑客之JS-ES6(15):异步编程处理之async函数

菜鸟教程:https://www.runoob.com/w3cnote/es6-async.html

async 函数是 Generator 函数的语法糖,是将 Generator 函数的星号(*)替换成async,将yield替换成await。

async函数的特点:

  • 内置执行器:Generator 函数的执行必须靠执行器,需要调用next方法才能真正执行,得到最后结果。async函数自带执行器,async函数会自动执行,输出最后结果。
  • 语义简明:async和await,比起星号和yield,语义更清楚了。async表示函数里有异步操作,await表示紧跟在后面的表达式需要等待结果。
  • 适用性更广:async函数的await命令后面,可以是 Promise 对象和原始类型的值(数值、字符串和布尔值,但这时会自动转成立即 resolved 的 Promise 对象)。
  • 继承了 Promise对象的方法:async函数的返回值是 Promise 对象,这比 Generator 函数的返回值是 Iterator 对象方便多了。你可以用then方法指定下一步的操作。

async函数的用法

async函数会先输出一个promise对象, 然后会监听await后面promise对象的返回状态, 当这状态为resolved的时候再往下执行其他的代码 

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        function print(value, time) {
            setTimeout(() => {
                console.log(value);
            }, time)
        }

        async function p(value1, time1, value2, time2) {
            await print(value1, time1);
            await d;  // 用一个没有定义的对象生成一个错误,交给后面的catch函数处理
            await print(value2, time2);
            return '心情美美哒';
        }

        p('下课了', 2000, '放学了', 3000)
            .then((data) => {   // 返回async函数的return的数据
                console.log(data);
            })
            .catch((err) => {   // 用来处理错误的函数
                let e = new Error('出现错误:');
                console.log(e, err);
            });
    </script>
</body>

</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值