记录async/await学习

async函数用法和简要分析

学习阮一峰老师的ES6入门后的记录es6

一、Generator 函数

至关于一个状态机,返回一个可遍历的对象(该遍历器对象能够用for of等调用遍历接口的方法等调用值),用function*来定义generator函数,yield来标记站厅点
示例:编程

<script>
        function* helloWorldGenerator() { //function*:定义generator函数
            yield 'hello'; //yield:表示暂停执行的标志
            yield 111 + 233; //表达式并不会马上计算,只有next到这才开始计算
            return 'ending';
        }

        var hw = helloWorldGenerator();

        console.log(hw.next()); //.next(),恢复执行
        console.log(hw.next());
        console.log(hw.next());
        console.log(hw.next());
        // {value: "hello", done: false}
        // {value: "344", done: false}
        // {value: "ending", done: true}
        // {value: undefined, done: true}
        //value为当前yield表达式的值,done:boolean,表明遍历是否结束
    </script>

二、协程的概念(异步编程)

  • 第一步,协程A开始执行。
  • 第二步,协程A执行到一半,进入暂停,执行权转移到协程B。
  • 第三步,(一段时间后)协程B交还执行权。
  • 第四步,协程A恢复执行。

三、async/await初步应用

async至关于*:表明异步操做的意思
await至关于yield:表明等待执行的意思promise

async函数相比与generator函数的差别在于:
  • async内置执行器,因此不用.next()方式显示执行
  • async函数返回的是promise对象
  • async函数相比与generator函数,表示方式更加明白

简单示例:异步

<script>
        async function helloWorldGenerator() { //function*:定义generator函数
            await console.log('hello'); //yield:表示暂停执行的标志
            await console.log(111 + 233); //表达式并不会马上计算,只有next到这才开始计算
            return 'ending';
        }
        helloWorldGenerator();//普通函数通常执行
        //hello
        //344
    </script>
相关文章
相关标签/搜索