异步函数,也称为“async/await”(语法关键字),是 ES6 Promise
模式在 ECMAScript 函数中的应用。
async/await 是 ES8 规范新增的。这个特性从行为和语法上都加强了 JavaScript,让以同步方式写的代码可以异步执行。异步
下面来看一个最简单的例子,这个 Promise
在超时以后会处理为一个值:async
let p = new Promise((resolve, reject) => setTimeout(resolve, 1000, 3));
这个 Promise
在 1000 毫秒以后处理为数值 3。若是程序中的其余代码要在这个值可用时
访问它,则须要写一个解决处理程序:函数
let p = new Promise((resolve, reject) => setTimeout(resolve, 1000, 3)); p.then((x) => console.log(x)); // 3
这实际上是很不方便的,由于其余代码都必须放到 Promise
处理程序中。不过能够把处理程序定义为一个函数:code
function handler(x) { console.log(x); } let p = new Promise((resolve, reject) => setTimeout(resolve, 1000, 3)); p.then(handler); // 3
这个改进其实也不大。这是由于任何须要访问这个 Promise
所产生值的代码,都须要以处理程序的形式来接收这个值。也就是说,代码照样仍是要放处处理程序里。ip
ES8 为此提供了 async/await 关键字同步