用一个例子吧,比如需要读取三个 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