ES6 async 函数用法

// 1.async 函数返回一个 Promise 对象,可以使用 then 方法添加回调函数。
    async function helloAsync(){
        return "helloAsync函数";
    };
    console.log(helloAsync());      // Promise {<fulfilled>: "helloAsync函数"
    
    helloAsync().then(v=>{
        console.log(v);             // helloAsync函数
    });
// 2.async 函数执行时,如果遇到 await 就会先暂停执行 ,
// 等到触发的异步操作完成后,恢复async 函数的执行并返回解析值。
// await 关键字仅在 async function 中有效。
// 如果在 async function 函数体外使用 await ,你只会得到一个语法错误。
// await 操作符用于等待一个 Promise 对象, 它只能在异步函数 async function 内部使用
    function testAwait(){
        return new Promise((resolve) => {
            setTimeout(function(){
                console.log("testAwait");
                resolve();
            }, 1000);
        });
    }
    
    // async function helloAsync(){
    //     await testAwait();
    //     console.log("helloAsync");
    // }
    // helloAsync();
    // // testAwait     // 延时器执行结束
    // // helloAsync

    async function helloAsync2(){
        testAwait();
        console.log("helloAsync2");
    }
    helloAsync2();
    // helloAsync2      // 延时器还没执行
    // testAwait
// 3.语法 pms = await expression;
// expression: 一个 Promise 对象或者任何要等待的值。
// 返回 Promise 对象的处理结果。如果等待的不是 Promise 对象,则返回该值本身。
// 如果一个 Promise 被传递给一个 await 操作符,await 将等待 Promise 正常处理完成并返回其处理结果
    function testAwait (x) {
        return new Promise(resolve => {
            setTimeout(() => {
                resolve(x);
            }, 2000);
        });
    }
    
    async function helloAsync() {
        var y = await testAwait ("hello world");
        console.log(y); 
        console.log("字符z");
    }
    helloAsync ();
    // hello world      //延时进行打印
    // 字符z
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容