• 01 fs模块


    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)
  • 相关阅读:
    福大软工 · 第十次作业
    最终作业:软工实践个人总结
    第三视角Beta答辩总结
    Beta 冲刺(7/7)
    Beta 冲刺 (6/7)
    Beta 冲刺 (5/7)
    Beta 冲刺 (4/7)
    Beta 冲刺 (3/7)
    Beta 冲刺 (2/7)
    福大软工 · 第十次作业
  • 原文地址:https://www.cnblogs.com/xiaoliziaaa/p/13299332.html
Copyright © 2020-2023  润新知