用一个例子吧,比如需要读取三个 txt 文件,在js代码中其他的代码部分和读取这三个文件需要进行一步读取,
回调函数方法 :
console.log('执行任务 001 ');
fs.readFile('../01.txt','utf-8', function(error,data){
console.log('读取文件01 : ',data);
fs.readFile('../02.txt','utf-8', function(error,data){
console.log('读取文件02 : ',data);
fs.readFile('../03.txt','utf-8', function(error,data){
console.log('读取文件03 : ',data);
})
})
})
console.log('执行任务 002 ');
执行结果如下 :
执行任务 001 执行任务 002 读取文件01 : 11111 读取文件02 : 2222 读取文件03 : 333
Promise 方法 :
console.log('执行任务 001 ');
function read(url){
return new Promise((resolve,reject)=>{
fs.readFile(url,'utf-8',function(err,data){
if(err) return reject(err);
resolve(data)
})
})
}
read('../01.txt').then(function(data){
console.log('读取文件01 : ',data)
},function(err){
console.log('读取文件01错误 : ',err)
});
read('../02.txt').then(function(data){
console.log('读取文件02 : ',data)
},function(err){
console.log('读取文件02错误 : ',err)
});
read('../03.txt').then(function(data){
console.log('读取文件03 : ',data)
},function(err){
console.log('读取文件03错误 : ',err)
});
console.log('执行任务 002');
执行结果如下 :
执行任务 001 执行任务 002 读取文件01 : 11111 读取文件03 : 333 读取文件02 : 2222
async await 方法 :
console.log('执行任务 001 ');
function read(url){
return new Promise((resolve,reject)=>{
fs.readFile(url,'utf-8',function(err,data){
if(err) return reject(err);
resolve(data)
})
})
}
async function result(){
let content1 = await read('../01.txt','utf-8');
console.log("async方法异步读取content1 : ",content1)
let content2 = await read('../02.txt','utf-8');
console.log("async方法异步读取content2 : ",content2)
let content3 = await read('../03.txt','utf-8');
console.log("async方法异步读取content3 : ",content3)
};
result();
console.log('执行任务 002 ');
以上代码值执行结果如下 :
执行任务 001 执行任务 002 async方法异步读取content1 : 11111 async方法异步读取content2 : 2222 async方法异步读取content3 : 333
