util.promisify

原始的写法回调函数

1
2
3
4
5
6
const fs =require('fs')
fs.readFile('./package.json',(err,data)=>{
if(err) return console.log(err)
data=JSON.parse(data)
console.log(data.name)
})

用了promise

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
const fs =require('fs')

function readFileAsync(path){
return new Promise((resolve,reject)=>{
fs.readFile(path,(err,data)=>{
if(err) reject(err)
else resolve(data)
})
})
}
readFileAsync('./package.json').then(data=>{
data=JSON.parse(data)
console.log(data.name)
}).catch(err=>{
console.log(err)
})

使用 util.promisify

1
2
3
4
5
6
7
8
const fs =require('fs')
const until =require('util')
until.promisify(fs.readFile)('./package.json').then(data=>{
data=JSON.parse(data)
console.log(data.name)
}).catch(err=>{
console.log(err)
})

加上async

1
2
3
4
5
6
7
8
9
10
11
12
13
14
const fs = require('fs')
const until = require('util')
const readAsync = until.promisify(fs.readFile)
async function init() {
try {
let data = await readAsync('./package.json')
data = JSON.parse(data)
console.log(data.name)
} catch (error) {
console.log(error)
}
}
init()


util.promisify
http://example.com/2018/07/21/util-promisify/
作者
shoukailiang
发布于
2018年7月21日
许可协议