Node.js ES7 異步函數

異步函數是異步編程語法的終極解決方案,它可讓咱們將異步代碼寫成同步形式,讓代碼再也不有回調函數嵌套,使代碼變得清晰明瞭。javascript

 

基礎語法:java

const fn = async () => {}
async function fn () {}

 

// async
// 1.在普通函數定義的前面加上asynv 關鍵字,普通函數就變成了異步函數
// 2.異步函數默認的返回值是promise 對象
// 3.在異步函數內部使用throw關鍵字進行錯誤的拋出
// 4.在異步函數內部使用 return 關鍵詞 進行結果的返回,結果會被包裹在promise 對象中, return 關鍵詞 代替了 promise 方法中的 resolve 。

// await 關鍵字
// 1. 它只能出如今異步函數中
// 2. promise await 後面只能寫promise 對象,寫其餘類型的API是不行的。
// 3. await 關鍵字是暫停異步函數向下執行,直到promise 返回結果。
 
示例:
 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()
相關文章
相關標籤/搜索