首先從大的方面來講,出現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); } }