①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的方式来接收数据函数