1 fs.readFile

异步执行函数

/**
fs 读取文件相对路径是相对终端命令行所在的路径
process.cwd()返回终端命令行的绝对路径
*
*/ fs = require('fs')
fs.readFile('./static/1.txt', (err, data) => {
if (err) {
console.log(err.message);
return
}
console.log(data); //二进制
console.log(data.toString()); //二进制转字符串
})
// 如果指定了编码格式,data就直接是字符串 ./可以省略'static/test/test.js'=='./static/test/test.js'
fs.readFile('static/test/test.js', 'utf8', (err, data) => {
if (err) return
console.log(data);
})
// 要求:在第一个异步任务读取成功之后再读取第二个异步任务, 第二成功后,在读取第三个异步任务

const fs = require('fs');

fs.readFile('./static/1.txt', (err, data) => {
if (err) throw err
console.log(data.toString());
fs.readFile('./static/2.txt', (err, data) => {
if (err) throw err
console.log(data.toString());
fs.readFile('./static/3.txt', (err, data) => {
if (err) throw err
console.log(data.toString());
})
})
})

promise 管理下

new Promise((resolve, reject) => {
fs.readFile('./static/1.txt', (err, data) => {
if (err) reject(err)
else resolve(data)
})
}).then(data => {
console.log(data.toString());
return new Promise((resolve, reject) => {
fs.readFile('./static/2.txt', (err, data) => {
err ? reject(err) : resolve(data) })
})
}).then(data => {
console.log(data.toString());
return new Promise((resolve, reject) => {
fs.readFile('./static/3.txt', (err, data) => {
err ? reject(err) : resolve(data)
}) })
}).then(data => console.log(data.toString())).catch(err => console.log(err.message))

封装读取promise的fs.readFile

function getFileByPath(path) {
return new Promise((resolve, reject) => {
fs.readFile(path, (err, data) => {
err ? reject(err) : resolve(data)
})
})
} getFileByPath('./static/1.txt').then(data => {
console.log(data.toString());
return getFileByPath('./static/2.txt')
}).then(data => {
console.log(data.toString());
return getFileByPath('./static/3.txt') }).then(data => console.log(data.toString())).catch(err => console.log(err))
//Promise.all([promise1,promise2,...])返回一个新的promise对象,只有都成功才执行then 返回数据也是一个数组 ,只要其中有一个失败,就直接走了catch
//适合页面发起多个ajax请求
const promise1 = getFileByPath('./static/1.txt')
const promise2 = getFileByPath('./static/2.txt')
const promise3 = getFileByPath('./static/3.txt') Promise.all([promise1, promise2, promise3]).then(data => console.log(data)).catch(err => console.log(err.message))
async function fn() {
const data1 = await promise1
const data2 = await promise2
const data3 = await promise3
return [data1.toString(), data2.toString(), data3.toString()]
}
fn().then(data => console.log(data)).catch(err => err)

01 fs模块的更多相关文章

  1. nodejs模块——fs模块

    fs模块用于对系统文件及目录进行读写操作. 一.同步和异步 使用require('fs')载入fs模块,模块中所有方法都有同步和异步两种形式. 异步方法中回调函数的第一个参数总是留给异常参数(exce ...

  2. node.js系列笔记之fs模块《二》

    一:感触 最近工作比较忙,感觉也比较多,因为工作上的不顺利,再加上加班比较多,所以最近心情不是很好,再加上英语能力差到不行,所以最近半个月学习进度也比较慢, 但还是告诉自己每天都坚持学一点,即使今天心 ...

  3. fs模块(二)

    1. renameSync 01. 重命名 02. 移动文件夹,相当于剪切作用 var fs = require('fs'); // 01 文件重命名 var renameFile = (oldFil ...

  4. node.js之fs模块

    一.fs模块的mkdir函数,创建文件夹 var http = require("http"); var fs = require("fs"); var ser ...

  5. [Nodejs] node的fs模块

    fs 模块 Node.js 提供一组类似 UNIX(POSIX)标准的文件操作 API. Node 导入文件系统模块(fs).Node.js 文件系统(fs 模块)模块中的方法均有异步和同步版本,例如 ...

  6. NodeJs Fs模块

    和前面的Http.Url模块一样,Fs模块也是node的核心模块之一,主要用于对系统文件及目录进行读写操作. 基本方法 fs.stat fs.stat可以用来判断是文件还是目录:stats.isFil ...

  7. [js]nodejs初探http/url/fs模块

    难怪我没学会, 因为我的套路有问题. 错误点, 1,大而全 2,不注重思路 学习要领: 1, 小而精 2, 重思路(总结) nodejs特点: 1.node提供了js的运行环境, 一般将node运行在 ...

  8. node(03)--利用 HTTP 模块 URl 模块 PATH 模块 FS 模块创建一个 WEB 服务器

    Web 服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等 Web 客户端提供文档,也可以放置网站文件,让全世界浏览:可以放置数据文件,让全世界下载.目前最主流的三个 We ...

  9. Node.js 文件系统fs模块

    Node.js 文件系统封装在 fs 模块是中,它提供了文件的读取.写入.更名.删除.遍历目录.链接等POSIX 文件系统操作. 与其他模块不同的是,fs 模块中所有的操作都提供了异步的和 同步的两个 ...

随机推荐

  1. 002_centos7关闭防火墙

    防火墙是比较烦人的,在自己做实验,或者实际应用中,如果配置不好的话,会出现各种匪夷所思的问题,那么如何关闭呢 在centos7里,防火墙改为了firewalld进程 首先用命令firewall-cmd ...

  2. Fault-Tolerance, Fast and Slow: Exploiting Failure Asynchrony in Distributed Systems

    本文(OSDI 18')主要介绍一种新的副本复制协议:SAUCR(场景可感知的更新与故障恢复).它是一种混合的协议: 在一定场景(正常情况)下:副本复制的数据缓存在内存中. 故障发生时(多个节点挂掉, ...

  3. Hexo博客部署到远程仓库(Conding、Gitee、Github)

    一.本地环境搭建 1.安装Git Git可以有效.高速的处理各种项目版本管理.也就是用来管理你的hexo博客文章,上传到GitHub的工具. Git下载地址 安装好了之后使用git -version查 ...

  4. shell脚本的常用执行方式

    1.sh+脚本的相对路径 [jinghang@hadoop101 datas]$ sh helloworld.sh helloworld sh+脚本的绝对路径 [jinghang@hadoop101 ...

  5. 使用pytorchviz进行模型可视化出现 'NoneType' object has no attribute 'grad_fn'

    问题 最近学习pytorch, 原来用kreas重现的模型改为用pytorch实现训练,因为这样给模型的操作更加细致, 对模型的掌控更好. 当我写好一个模型 出现了这个问题 使用pytorchviz进 ...

  6. 《T-GCN: A Temporal Graph Convolutional Network for Traffic Prediction》 代码解读

    论文链接:https://arxiv.org/abs/1811.05320 博客原作者Missouter,博客链接https://www.cnblogs.com/missouter/,欢迎交流. 解读 ...

  7. 《JVM G1源码分析和调优》读书笔记

    GC的相关算法与JVM的垃圾收集器 GC的相关算法 分代管理 复制算法 标记清除 标记压缩 JVM垃圾收集器 P242 表11-1 不同类型垃圾回收期比较 串行收集器 Serial. Serial G ...

  8. 【ZJOI2012】灾难 - LCA+拓扑排序

    题目描述 阿米巴是小强的好朋友. 阿米巴和小强在草原上捉蚂蚱.小强突然想,如果蚂蚱被他们捉灭绝了,那么吃蚂蚱的小鸟就会饿死,而捕食小鸟的猛禽也会跟着灭绝,从而引发一系列的生态灾难. 学过生物的阿米巴告 ...

  9. 浏览器自动化的一些体会6 增强的webBrowser控件

    这里谈两点 1.支持代理服务器切换 一种方法是修改注册表,不是太好的做法,而且,只能改全局设置,不能改局部(比如只让当前的webBrowser控件使用代理,而其他应用不用代理) 另外一个较好的方法,示 ...

  10. hadoop2.6虚拟机安装

    Linux环境设置/*安装Hadoop集群时要确保以下几个方面1.本机与虚拟机之间是否可以通信(Ping).如果不行检查下面 1.1本机防火墙关闭(开启情况是本机可以ping虚拟机,虚拟机不能ping ...