zoukankan      html  css  js  c++  java
  • ECMAScript7中async await的基本用法

    async await主要功能可以简化Promise then写法,代码更简洁。
    async函数返回一个 Promise 对象,可以使用then方法添加回调函数。
    当函数执行的时候,一旦遇到await就会先返回,等到异步操作完成,再接着执行函数体内后面的语句。
    await命令只能用在async函数之中。

    例子,用Promise then实现:

        function f1(){
            var p = new Promise(function(resolve, reject){            
                setTimeout(function(){
                    console.log('f1');
                    resolve('f1回调数据');
                }, 2000);
            });
            return p;
        }
        function f2(){
            var p = new Promise(function(resolve, reject){            
                setTimeout(function(){
                    console.log('f2');
                    resolve('f2回调数据');
                }, 1000);
            });
            return p;
        }    
        
        f1().then(function(data){
            console.log(data);
            return f2();
        }).then(function(data){
            console.log(data);
        });

    输出:

        f1
        f1回调数据
        f2
        f2回调数据

    把上面的then改为用async await实现,输出结果一样:

        async function test(){
            var r1 = await f1();
            console.log(r1);
            var r2 = await f2();
            console.log(r2);
        }
        test();

    f1和f2是继发关系,f2要等f1完成后才会执行。
    如果两者不存在依赖关系,要同时执行,可以改成下面:

       async function test(){
            var [r1,r2] = await Promise.all([f1(),f2()]);        
            console.log(r1);
            console.log(r2);
        }
        test();   

    或者:

    async function test(){
            var f1p = f1();
            var f2p = f2();        
            var r1 = await f1p;        
            var r2 = await f2p;
            console.log(r1);
            console.log(r2);
        }
        test();    

    输出:

    f2
    f1
    f1回调数据 
    f2回调数据

    参考:https://es6.ruanyifeng.com/#docs/async

  • 相关阅读:
    IOS整体代码复习一
    IOS复习UIActionSheet&UIAlertView
    IOS复习Plist文件的读取和写入
    IOS复习UITextfield&UILabel
    iOS中判断两个圆是否重叠
    iOS指针回调函数
    ios函数指针
    iOS分区
    ios指针第二天
    iOS指针第一天
  • 原文地址:https://www.cnblogs.com/gdjlc/p/14486720.html
Copyright © 2011-2022 走看看