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()方法

node.js中文文档:
在这里插入图片描述

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方法的主要内容,如果未能解决你的问题,请参考以下文章

python进阶练习之——time模块❤️

python进阶练习之——按位与

python进阶练习之——time模块IV❤️

python进阶练习之——time模块III❤️

python进阶练习之——time模块II❤️

课堂练习之软件测试