node 异步回调 —迭代记录
1.0 开始时node采用了基础的js回调形势
const fs = require('fs');
fs.readFile('./package.json',(err,data) => {
if(err) return console.log(err);
data =JSON.parse(data)
console.log(data)
})
2.0 引入了promise语法进行书写
const fs = require("fs");
function promiseFun(path) {
console.log(path)
return new Promise((resolve, reject) => {
fs.readFile(path, (err, data) => {
if (err){ reject(err)}
else{ resolve(data);}
});
});
}
promiseFun('./package.json')
.then(data => {
data = JSON.parse(data);
console.log(data.name);
})
.catch(err => {
console.log("err");
});
3.0 使用node 的util工具类包装
const fs = require("fs");
const util = require('util');
util.promisify(fs.readFile)('./package.json')
.then(JSON.parse)
.then(data => {
console.log(data.name);
})
.catch(err => {
console.log(err)
})
4.0 使用最新的async语法实现异步方法同步书写
const fs = require("fs");
const util = require('util');
const readAsync=util.promisify(fs.readFile);
async function init() {
try {
let data = await readAsync('./package.json')
data = JSON.parse(data);
console.log(data);
}catch(err){
console.log(err)
}
}

浙公网安备 33010602011771号