1-3 毫不犹豫的使用promise
回调式(老旧)
fs.readFile('./package.json',(err,data)=>{
if(err) console.log(err)
data=JSON.parse(data)
console.log(data.name)
})
过度式
function readFileAsync(path){
return new Promise((resolve,reject)=>{
fs.readFile(path,(err,data)=>{
if(err) reject(err)
resolve(data)
})
})
}
readFileAsync('./package.json')
.then((data)=>{
console.log(JSON.parse(data).name)
}).catch(err=>{
console.log(err)
})
最新的包装式
const util=require('util')
//util.promisify(放一个异步的有回调的函数) 包装成promise
util.promisify(fs.readFile)('./package.json')
//.then(console.log)
.then(JSON.parse)
.then(data=>{
console.log(data.name)
}).catch(err=>{
console.log(err)
})
1-4 使用babel 编译es7 async function
// 使用async即用同步代码写异步的操作来完成上一个例子的代码
const fs = require('fs')
const util = require('util')
const readFile = util.promisify(fs.readFile)
async function init(path) {
try{
console.log('begin')
let data = await readFile(path)
console.log(JSON.parse(data).name)
console.log('over')
}catch(err){
console.log(err)
}
}
init('./package.json')
以后会讲到如何使用babel去编译
网友评论