①async函數是ES6裏增長的函數,使得異步操做變得更加簡單html
②在async函數內部使用await的方式來操做異步API,awit是一種新的語法,只能在asysc函數中使用,await通常是在其後跟一個promise操做APInode
③參考以前的文章:異步編程(回調函數,promise)es6
④async函數的文檔能夠參考:http://es6.ruanyifeng.com/#docs/async編程
// a.txt 的內容是 ‘hello aaa’ // 在node中提供了一個一個根據函數,專門用來把一些callback形式的API包裝成promise的方法 var util = require('util') var fs = require('fs') var readFile = util.promisify(fs.readFile) async function read() { const a = 1 const b = await readFile('./data/a.txt','utf8') const c = 2 console.log(a,b,c) } console.log(3) read() console.log(4)
①callback方式數組
// a.txt 的內容是 ‘hello aaa’ // b.txt 的內容是 ‘hello bbb’ // a.txt 的內容是 ‘hello ccc’ var fs = require('fs'); fs.readFile('./data/a.txt','utf8',function(err,data){ if(err){ throw err } console.log(data) fs.readFile('./data/b.txt','utf8',function(err,data){ if(err){ throw err } console.log(data) fs.readFile('./data/c.txt','utf8',function(err,data){ if(err){ throw err } console.log(data) }) }) })
②promise方式promise
// a.txt 的內容是 ‘hello aaa’ // b.txt 的內容是 ‘hello bbb’ // a.txt 的內容是 ‘hello ccc’ var fs=require('fs') function readFile(...args){ // 出如今方法定義參數叫作:rest參數 // 出如今方法調用參數中叫作:數組的展開操做符 return new Promise((resolve,reject) =>{ fs.readFile(...args,(err,data) =>{ if(err){ return reject(err) } resolve(data) }) }) } readFile('./data/a.txt','utf8').then(data => { console.log(data) return readFile('./data/b.txt','utf8') }).then(data => { console.log(data) return readFile('./data/c.txt','utf8') }).then(data => { console.log(data) })
③async方式異步
// a.txt 的內容是 ‘hello aaa’ // b.txt 的內容是 ‘hello bbb’ // a.txt 的內容是 ‘hello ccc’ // 在node中提供了一個一個根據函數,專門用來把一些callback形式的API包裝成promise的方法 var util = require('util') var fs = require('fs') var readFile = util.promisify(fs.readFile) async function read() { const dataA = await readFile('./data/a.txt','utf8') const dataB = await readFile('./data/b.txt','utf8') const dataC = await readFile('./data/c.txt','utf8') return [dataA,dataB,dataC] } read().then(data => { console.log(data) })
①任何函數前面加上async就變爲了一個async函數,只有在async函數中才能夠使用await結合Promise來使用同步的風格來調用異步APIasync
②HTML5新增了一個fetch API 用於發送請求,和 XMLHttpRequest功能差很少,可是原生支持promise,能夠參考:MDN文檔
異步編程
③async函數返回的是一個Promise對象,須要經過then的方式來接收數據函數