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

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM