nodejs中的异步读取文件

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

 

原文地址:https://www.cnblogs.com/rose-sharon/p/11295557.html