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)

最新文章

  1. 怎么理解js中的事件委托
  2. java的布尔运算符和位运算符
  3. UITextFeild的用法
  4. Leetcode H-index
  5. 2016中国VR开发者论坛第一期
  6. GC、LOH和Performance相关
  7. 课堂所讲整理:包装&工具类
  8. ASP.NET单点登录(代码)
  9. POJ3608(旋转卡壳--求两凸包的最近点对距离)
  10. poj2723
  11. BS_OWNERDRAW风格的作用和例子,值得研究~
  12. 历史执行Sql语句性能分析 CPU资源占用时间分析
  13. Oracle - index (索引)
  14. IIS7.5(IIS7)配置伪静态urlrewrite
  15. 浅谈 Linux
  16. Android 系统编译
  17. 初学Python之 字符串 索引 分片
  18. gulp learning note
  19. Less循环
  20. 关联分析Apriori算法和FP-growth算法初探

热门文章

  1. Spring Security学习笔记一
  2. “随手记”开发记录day16
  3. sockjs.js?9be2:1606 GET http://192.168.1.101:8080/sockjs-node/info?t=1583642185049 net::ERR_CONNECTION_TIMED_OUT错误连接方式解决方法
  4. day25:魔术方法
  5. Java 基础 —— 注解 Annotation
  6. JQuery的turn.js实现翻书效果
  7. CSS概述(二)
  8. Android 开发学习进程0.19 webview 的使用
  9. Idea + maven搭建SSM框架
  10. JavaScript设计模式之策略模式【组合委托】