異步函數是異步編程語法的終極解決方案,它可讓咱們將異步代碼寫成同步形式,讓代碼再也不有回調函數嵌套,使代碼變得清晰明瞭。javascript
基礎語法:java
const fn = async () => {} async function fn () {}
1 async function f1 () { 2 return 'f1' 3 } 4 5 async function f2 () { 6 return 'f2' 7 } 8 9 async function f3 () { 10 return 'f3' 11 } 12 13 async function run () { 14 let r1 = await f1() 15 let r2 = await f2() 16 let r3 = await f3() 17 console.log(r1) 18 console.log(r2) 19 console.log(r3) 20 } 21 22 run()
示例2:編程
1 const fs = require('fs') 2 // 改造異步函數API,讓其返回promise對象,從而支持異步函數語法 3 const promisify = require('util').promisify 4 // 調用promisify 方法改造現有異步API,讓其返回promise 對象 5 const readFile = promisify(fs.readFile) 6 7 async function run () { 8 let r1 = await readFile('./1.txt', 'utf8') 9 let r2 = await readFile('./2.txt', 'utf8') 10 let r3 = await readFile('./3.txt', 'utf8') 11 console.log(r1) 12 console.log(r2) 13 console.log(r3) 14 } 15 16 run()