async/await介绍

对于异步回调带来的麻烦,有很多方案可以解决,ES6中添加了原生支持的Promise,还引入了Generator,但是在ES7中又提出了新的方案,就是async和await。

async 是什么呢?

其实,async函数就是Generator函数的语法糖。相比于*和yield,语义更清楚,async表示函数内有异步操作,await表示跟在他后面的表达式需要等待结果。

用法

当函数执行的时候,遇见await就会先返回,等到后面的异步操作完成,就会再接着执行下面的语句,就相当于同步的函数。

1
2
3
4
5
6
7
8
9
10
11
12
function timeout(ms) {
return new Promise((resolve) => {
setTimeout(resolve, ms);
});
}
async function asyncPrint(value, ms) {
await timeout(ms);
console.log(value)
}
asyncPrint('hello world', 5000);

上面的代码会在5s后输出‘hello world’