1.需求:找到tom的个人资料
2.已知:info.json有所有人的资料存放位置
3.解决办法:先
读取info.json文件,根据tom名字找出他的个人资料具体的存放位置,然后
再读出tom的资料返回去。
必须要这样写,否则不行。
废话少说,直接上代码,
不懂的,评论问
1.自己创建3个文件
创建 info.json
[
{
"name": "tom",
"file": "111.json"
},
{
"name": "jerry",
"file": "222.json"
}
]
创建 111.json
{
"name": "tom",
"age": 15,
"sex": "male"
}
创建 222.json
{
"name": "jerry",
"age": 18,
"sex": "female"
}
2.这是index.js文件的代码
var fs = require('fs');
// async-await用法
async function getInfo(name){
console.log('--fun a');
var file = await b(name)
var info = await c(file);
console.log('info:',info)
}
function b(name){
return new Promise((resolve,reject)=>{
console.log('--fun b');
fs.readFile('info.json',(err,rel)=>{
console.log("err,rel:",err,rel.toString());
if(err){
reject(err)
}
let rels = rel.toString();
let ret = JSON.parse(rels);
let file;
for(let i=0;i<ret.length;i++){
if(ret[i].name==name){
file = ret[i].file;
break;
}
}
console.log('file:',file)
resolve(file)
})
})
}
function c(file){
return new Promise((resolve,reject)=>{
console.log('--fun c',file);
fs.readFile(file,(err,rel)=>{
console.log("err,rel:",err,rel.toString());
if(err){
reject(err)
}
let rels = rel.toString();
let ret = JSON.parse(rels);
resolve(ret);
})
})
}
// 调用
getInfo("tom")
3.最后
运行node index.js
就好