美文网首页
es7之async/await使用演示

es7之async/await使用演示

作者: duans_ | 来源:发表于2019-06-21 18:18 被阅读0次

async/await使用说明

  • async使用在函数定义的部分, 被async修改的函数会变成一个异步(promise)函数
async function fn(){
  return '这是函数的返回值';
}
// 此处无法直接接收到demo函数的返回值; 
var res=fn();
// 打印结果: Promise { '这是函数的返回值' }
console.log(res);

// 正确的姿势
fn().then((res)=>{
    // 打印结果:  这是函数的返回值
    console.log(res)
});

// 被async关键字修饰的函数fn会被转换成类似下面的代码结构
function fn(){
  return new Promise(function(resolve,reject){
        var res='这是函数的返回值';
        resolve(res);    
  })
}

  • await关键字后面必须是一个promise对象(一般是在一个函数中返回一个promise对象)
  • 一般而言async和await是配合使用的

async修饰不同的函数

修饰普通函数

async function demo(){} 

修饰函数表达式

var demo=async  function(){
}

修饰箭头函数

var demo=async ()=>{
}

演示实际应用

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

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

<body>

    <div>
        <button id="btn1">传统方式请求数据</button>
        <button id="btn2">async&await请求数据</button>

    </div>
    <script>

        window.addEventListener('load', function () {
            // 普通方式处理promise
            document.querySelector('#btn1').onclick = function(){
                // 正常的promise调用方式
                getData().then((res) => {
                    console.log('传统方式的promise处理方法:', res);
                });

            };
            // 使用async&await
            document.querySelector('#btn2').onclick = async function clickHandle() {
                // 调用getData方法请求数据; 需要使用await关键字调用返回值为promise方法
                var res = await getData();
                console.log('使用async&await调用promise:', res);
            };
        });

        // 请求数据
        function getData() {
            return new Promise(function (resolve, reject) {
                // 实际开发中应该在此处发送ajax请求数据
                const data = {
                    name: 'zs',
                    age: 30
                }
                resolve(data);
            });
        }

    </script>
</body>

</html>

相关文章

网友评论

      本文标题:es7之async/await使用演示

      本文链接:https://www.haomeiwen.com/subject/pcmuqctx.html