简单介绍
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会有序的执行,上一个执行完毕才会执行下一个,给人的感觉就是把异步变成了同步
效果如下: