传统读取文件的例子
利用回调函数层层嵌套 回调地狱
const fs = require('fs')
const path = require('path')
function readFileName (fileName,callback){
const fullName = path.resolve(__dirname, './',fileName)
fs.readFile(fullName,(error,data)=>{
if(error){
console.log(error)
return
}
callback(JSON.parse(data.toString())) // callback中的参数为下边的 aData
})
}
readFileName("a.json",(aData)=>{
console.log('a',aData);
readFileName(aData.next,(bData)=>{
console.log('b',bData);
readFileName(bData.next,(cData)=>{
console.log('c',cData);
})
})
})
promise方式
const fs = require('fs')
const path = require('path')
function readFileName(fileName){
const promise = new Promise((resolve,reject)=>{
const fullName = path.resolve(__dirname,'./',fileName);
fs.readFile(fullName,(error,data)=>{
if(error){
reject(error)
return
}
resolve(JSON.parse(data.toString()));
})
})
return promise
}
readFileName('a.json').then(aData=>{
//readFileName('a.json')是一个promise对象,return出的数据将then也变成一个promise对象
console.log('a',aData)
return readFileName(aData.next)
}).then(bData=>{
console.log('b',bData);
return readFileName(bData.next);
}).then(cData=>{
console.log(cData)
})
网友评论