对于异步回调带来的麻烦,有很多方案可以解决,ES6中添加了原生支持的Promise,还引入了Generator,但是在ES7中又提出了新的方案,就是async和await。
async 是什么呢?
其实,async函数就是Generator函数的语法糖。相比于*和yield,语义更清楚,async表示函数内有异步操作,await表示跟在他后面的表达式需要等待结果。
用法
当函数执行的时候,遇见await就会先返回,等到后面的异步操作完成,就会再接着执行下面的语句,就相当于同步的函数。123456789101112function 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’