Promise--实践练习之fs模块 & node运行Js脚本 & Promise封装练习-fs模块 & util.promisify方法
Posted Z && Y
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Promise--实践练习之fs模块 & node运行Js脚本 & Promise封装练习-fs模块 & util.promisify方法相关的知识,希望对你有一定的参考价值。
1. 实践练习之fs模块 & node运行Js脚本
fs是Node.js下面对文件进行操作的一个模块,Node.js 提供一组类似 UNIX(POSIX)标准的文件操作 API。 Node 导入文件系统模块(fs)。Node.js 文件系统(fs 模块)模块中的方法均有异步和同步版本,例如读取文件内容的函数有异步的 fs.readFile() 和同步的 fs.readFileSync()。异步的方法函数最后一个参数为回调函数,回调函数的第一个参数包含了错误信息(error)。最好使用异步方法,比起同步,异步方法性能更高,速度更快,而且没有阻塞(重点)。对于流量较大的服务器,最好还是采用异步操作,同步操作时,只有前一个操作结束,才会开始后一个操作,如果某个操作特别耗时(常常发生在读写数据时),会导致整个程序停顿。
1.1 回调函数 形式
准备工作:准备一个文本文件,待会会读取他的内容。
content.txt
观书有感
作者:朱熹
半亩方塘一鉴开,天光云影共徘徊。
问渠那得清如许?为有源头活水来
Js代码:
2-Promise实践练习-fs模块.js
// 声明fs模块
const fs = require('fs');
//回调函数 形式
fs.readFile('./promise/resource/content.txt', (err, data) => {
// 如果出错 则抛出错误
if (err) {
throw err
} else {
//输出文件内容
console.log(data.toString());
}
});
Node运行Js脚本:
node promise\\2-Promise实践练习-fs模块.js
1.2 Promise 形式
Js代码:
2-Promise实践练习-fs模块.js
// 声明fs模块
const fs = require('fs');
//Promise 形式
new Promise((resolve, reject) => {
fs.readFile('./promise/resource/content.txt', (err, data) => {
//如果出错 失败和成功的回调函数只会执行一个。
if (err) reject(err);
//如果成功
resolve(data);
});
}).then(value => {
// 如果成功,打印txt文件的内容
console.log(value.toString());
}, reason => {
// 如果成功,打印失败的原因
console.log(reason);
});
Node运行Js脚本:
node promise\\2-Promise实践练习-fs模块.js
1.3 Promise封装练习-fs模块
Js代码:
/**
* 封装一个函数 mineReadFile 读取文件内容
* 参数: path 文件路径
* 返回: promise 对象
*/
function mineReadFile(path){
return new Promise((resolve, reject) => {
//读取文件
require('fs').readFile(path, (err, data) =>{
//判断
if(err) reject(err);
//成功
resolve(data);
});
});
}
mineReadFile('./promise/resource/content.txt').then(value=>{
//输出文件内容
console.log(value.toString());
}, reason=>{
console.log(reason);
});
1.4 util.promisify()方法
Js代码:
/**
* util.promisify 方法
*/
//引入 util 模块
const util = require('util');
//引入 fs 模块
const fs = require('fs');
//返回一个新的Promise对象
let mineReadFile = util.promisify(fs.readFile);
mineReadFile('./promise/resource/content.txt').then(value => {
console.log(value.toString());
}, reason => {
console.warn(reason);
});
以上是关于Promise--实践练习之fs模块 & node运行Js脚本 & Promise封装练习-fs模块 & util.promisify方法的主要内容,如果未能解决你的问题,请参考以下文章