1. 程式人生 > >async函數

async函數

style 方法 string var func async ret generator fstab

1.含義

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,僅此而已。

async函數對 Generator 函數的改進,體現在以下四點。

(1)內置執行器。

(2)更好的語義

(3)更廣的適用性。

(4)返回值是 Promise。

2.用法

3.語法

4.async函數的實現原理

5.與其他異步處理方法的比較

6.實例:按照順序完成異步操作

7.異步遍歷器

async函數