async 函数是什么?一句话,async 函数就是 Generator 函数的语法糖。

有一个 Generator 函数,依次读取两个文件。
var fs = require('fs');var readFile = function (fileName){  return new Promise(function (resolve, reject){    fs.readFile(fileName, function(error, data){      if (error) reject(error);      resolve(data);    });  });};var gen = function* (){  var f1 = yield readFile('/etc/fstab');  var f2 = yield readFile('/etc/shells');  console.log(f1.toString());  console.log(f2.toString());};
写成 async 函数,就是下面这样。
var asyncReadFile = async function (){  var f1 = await readFile('/etc/fstab');  var f2 = await readFile('/etc/shells');  console.log(f1.toString());  console.log(f2.toString());};
一比较就会发现,async 函数就是将 Generator 函数的星号(*)替换成 async,将 yield 替换成 await,仅此而已。

http://www.ruanyifeng.com/blo...
上面这一段是阮一峰老师的讲解。

https://segmentfault.com/a/11...
详情就是边城大佬的透彻讲解