第一章

2018-11-20  本文已影响0人  阿水日记

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去编译

上一篇 下一篇

猜你喜欢

热点阅读