【学习笔记】ES6 标准 - async & await

2019-06-21  本文已影响0人  Spidd
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>模块化</title>
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    <script>

        /*----------ES6 async & await-----------*/
        /*
        * 【特点】
        * 1.await只能放到async函数中;
        * 2.相比genrator语义化更强;
        * 3.await后面可以是promise对象,也可以数字、字符串、布尔
        * 4.async 函数返回是一个promise对象,
        * 5.只要await语句后面Promise状态变成reject,那么整个async函数会中断执行
        * 【语法】
        * async function fn() { //表示异步,这个函数里有异步任务
            // let result = await xxx 表示后面语句需要等待结果获取到再执行;
          }
        * */
        {
            async function fn() { //表示异步,这个函数里有异步任务
                return 'ddd'
            }
            console.log(fn()); //Promise
            fn().then(res=>{
                console.log(res) //ddd
            });

            // 抛出 Error
            {
                async function fn() {
                    throw new Error('Error出错了')
                }
                fn().then(res=>{
                    console.log(res) //ddd
                },err=>{
                    console.log(err)
                });
            }

            // 抛出 reject
            {
                async function fn() {
                    return Promise.reject('error错误'); // 下面不会执行
                    let a = await Promise.resolve('success')
                    console.log(a); //success
                }
                fn().then(res=>{
                    console.log(res) //ddd
                },err=>{
                    console.log(err)
                });
            }

            // reject不中断执行
            {
                async function fn() {
                    try{
                        let a = await Promise.reject('错误');
                        //不会执行下面的
                        console.log(a)
                    }catch (e) {
                        // 会执行下面的;
                        console.log(e);
                    }

                }
                fn();
            }

            //Promise catch
            {
                async function fn() {
                    let res = await Promise.reject('错误4').catch(err=>{
                        // 当错误时。填充默认数据。
                        return {
                            code:'200'
                        };
                    });
                    console.log(res.code);
                }
                fn();
            }

        }

    </script>
</head>
<body>
<h1></h1>
</body>
</html>
上一篇 下一篇

猜你喜欢

热点阅读