3 回答
TA贡献1843条经验 获得超7个赞
给你几种写法:
callback形式:
//func.js
const readFile = require('util').promisify(require('fs').readFile);
function read2JSON(filename, callback){
let result;
readFile(filename).then((data)=>{
callback(null, JSON.parse(data.toString()));
}).catch((err)=>{
console.log("******ERROR******:" + err);
callback(err, null);
});
}
exports.read2JSON = read2JSON;
//测试一下
require('./func').read2JSON('db/list.json', (err, parseResult) {
console.log(parseResult);
});
Promise写法:
//func.js
const readFile = require('util').promisify(require('fs').readFile);
function read2JSON(filename, callback){
return readFile(filename).then((data)=>{
return JSON.parse(data.toString());
})
}
exports.read2JSON = read2JSON;
require('./func').read2JSON('db/list.json').then(function(result){
console.log(result);
});
async/await 写法:
//func.js
const readFile = require('util').promisify(require('fs').readFile);
exports.read2JSON = async (filename, callback) => {
let data = await readFile(filename);
let result = JSON.parse(data.toString());
return result;
}
require('./func').read2JSON('db/list.json').then(result => {
console.log(result);
});
TA贡献1895条经验 获得超7个赞
简单讲js是单线程,一定会一部分代码阻塞另一部分代码的运行,但是像网络请求或者读写文件,动作的开始和结束是在js,中间耗时的过程是在其他线程,异步就是让中间这部分不去阻塞其他js代码
添加回答
举报