async 函数

118 阅读1分钟

简单介绍

async 函数是个异步函数 在ES2017 标准引入了 async 函数,使得异步操作变得更加方便, async 函数还是 Generator 函数的语法糖

async的作用是什么

async 的作用就是将promise和生成器的效果融合了一下,promise主要用于解决回调地狱,也就是将异步代码同步封装。async同样能达到这个效果,而它达成效果依赖的则是生成器的特性。

async的使用方法

只需要在函数前面加上 async 就可以了

    async function fn() {

    }

    let fn = async function () {

    }
    document.onclick = async function (e) {

    }

await的使用方法:

  • await操作符只能在异步函数 async function 中使用
  • await表达式会暂停当前 async function 的执行,等待 Promise 处理完成。
  • 若 Promise 正常处理(fulfilled),其回调的resolve函数参数作为 await 表达式的值,然后继续执行

举个例子:

function request() {
    return new Promise(function(resolve, reject) {
        setTimeout(function() {
            resolve("await:");
        }, 1000);
    });
}

async function get() {
    let res1 = await request();
    console.log(res1, 1);
    let res2 = await request();
    console.log(res2, 2);
    let res3 = await request();
    console.log(res3, 3);
}
get();

await会有序的执行,上一个执行完毕才会执行下一个,给人的感觉就是把异步变成了同步
效果如下:

image.png