现在项目下有三个文件(1.txt 2.txt 3.txt)内容分别为 “1”,“2”,“3”;
我们需要使用fs.readFile
方法来依次读取他们的内容
实验环境:node v12.13.0
1.使用连续的回调函数(回调地狱 ̄□ ̄||)
思路:在读取文件的时候在其回调函数中再进行读取下一个文件。
//引入文件操作库
const fs = require('fs');
// 读取文件1
fs.readFile('./1.txt', 'utf8', (err1, res1) => {
if (err1 !== null) {
//文件1的错误处理
console.log(err1);
} else {
//处理文件1的内容
console.log(res1);
//读取文件2
fs.readFile('./2.txt', 'utf8', (err2, res2) => {
if (err2 !== null) {
//文件2的错误处理
console.log(err2);
} else {
//处理文件2的内容
console.log(res2);
//读取文件3
fs.readFile('./3.txt', 'utf8', (err3, res3) => {
if (err3 !== null) {
//文件3的错误处理
console.log(err3);
} else {
//处理文件3的内容
console.log(res3);
}
})
}
})
}
})
执行结果
> 1
> 2
> 3
2.使用Promise
//引入文件操作库
const fs = require('fs');
/* 使用Promise */
const p1 = () => {
return new Promise((resolve, reject) => {
fs.readFile('./1.txt', 'utf8', (err, res) => {
if (err !== null) {
reject(err);
} else {
resolve(res);
}
})
})
};
const p2 = () => {
return new Promise((resolve, reject) => {
fs.readFile('./2.txt', 'utf8', (err, res) => {
if (err !== null) {
reject(err);
} else {
resolve(res);
}
})
})
};
const p3 = () => {
return new Promise((resolve, reject) => {
fs.readFile('./3.txt', 'utf8', (err, res) => {
if (err !== null) {
reject(err);
} else {
resolve(res);
}
})
})
};
p1().catch(err => console.log(err))
.then((res) => {
console.log(res);
return p2();
})
.catch(err => console.log(err))
.then((res) => {
console.log(res);
return p3();
})
.catch(err => console.log(err))
.then((res) => {
console.log(res);
})
执行结果
> 1
> 2
> 3
3.使用async await关键字
/* 使用async */
const p1 = () => {
return new Promise((resolve, reject) => {
fs.readFile('./1.txt', 'utf8', (err, res) => {
if (err !== null) {
reject(err);
} else {
resolve(res);
}
})
})
};
const p2 = () => {
return new Promise((resolve, reject) => {
fs.readFile('./2.txt', 'utf8', (err, res) => {
if (err !== null) {
reject(err);
} else {
resolve(res);
}
})
})
};
const p3 = () => {
return new Promise((resolve, reject) => {
fs.readFile('./3.txt', 'utf8', (err, res) => {
if (err !== null) {
reject(err);
} else {
resolve(res);
}
})
})
};
const run = async() => {
try {
let r1 = await p1();
let r2 = await p2();
let r3 = await p3();
console.log(r1);
console.log(r2);
console.log(r3);
} catch (e) {
console.log(e);
}
}
run();
4.使用util.promisify()
/* 使用promisify */
//引用util模块里面的promisify
const promisify = require('util').promisify;
const readFile = promisify(fs.readFile);
const run = async() => {
try {
let r1 = await readFile('./11.txt', 'utf8');
let r2 = await readFile('./2.txt', 'utf8');
let r3 = await readFile('./3.txt', 'utf8');
} catch (e) {
console.log(e);
return;
}
console.log(r1);
console.log(r2);
console.log(r3);
}
run();
小白笔记,若有错误,还请留言斧正?
扫码在手机查看
您没有登录或者此篇文章不允许评论哟~~
暂无评论