01 fs模块
2024-08-27 18:02:25
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)
最新文章
- 怎么理解js中的事件委托
- java的布尔运算符和位运算符
- UITextFeild的用法
- Leetcode H-index
- 2016中国VR开发者论坛第一期
- GC、LOH和Performance相关
- 课堂所讲整理:包装&;工具类
- ASP.NET单点登录(代码)
- POJ3608(旋转卡壳--求两凸包的最近点对距离)
- poj2723
- BS_OWNERDRAW风格的作用和例子,值得研究~
- 历史执行Sql语句性能分析 CPU资源占用时间分析
- Oracle - index (索引)
- IIS7.5(IIS7)配置伪静态urlrewrite
- 浅谈 Linux
- Android 系统编译
- 初学Python之 字符串 索引 分片
- gulp learning note
- Less循环
- 关联分析Apriori算法和FP-growth算法初探
热门文章
- Spring Security学习笔记一
- “随手记”开发记录day16
- sockjs.js?9be2:1606 GET http://192.168.1.101:8080/sockjs-node/info?t=1583642185049 net::ERR_CONNECTION_TIMED_OUT错误连接方式解决方法
- day25:魔术方法
- Java 基础 —— 注解 Annotation
- JQuery的turn.js实现翻书效果
- CSS概述(二)
- Android 开发学习进程0.19 webview 的使用
- Idea + maven搭建SSM框架
- JavaScript设计模式之策略模式【组合委托】