async函數
阿新 • • 發佈:2017-06-16
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函數