首先从大的方面来讲,出现async函数时为了解决JS编程中的异步操做,再往具体说就是为了对以往异步编程方法的一种改进,也有人说仅仅只是Generator 函数的语法糖,这个我暂时还没理解到那个程度,由于我对Generator仍是只知其一;不知其二,等理解透一些了会专门写篇文章记录一下的。回到async函数,它算是阶段性的解决了异步编程的问题,也就是说让咱们无限接近了异步编程的最高境界,就是不用关心它是否是异步,一切都是同步编程的写法,那样可读性就很强了。node
async函数是ES2017标准新引入的,使得异步操做变得更加方便。例如在nodejs中使用async函数读取两个文件,能够这样es6
const fs = require('fs'); const asyncReadFile = async function () { const f1 = await readFile('/etc/fstab'); const f2 = await readFile('/etc/shells'); console.log(f1.toString()); console.log(f2.toString()); };
async函数实际上就是对Generator函数的改进,体如今如下四点。shell
async function myFunction() { try { await somethingThatReturnsAPromise(); } catch (err) { console.log(err); } }