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)
}
}
本文探讨了Node.js中处理异步操作的演变过程,从基础的回调函数开始,逐步介绍到Promise、util工具类的promisify方法,最终深入讲解最新的async/await语法。通过具体示例展示了不同阶段的异步编程技巧。
395

被折叠的 条评论
为什么被折叠?



