Promise 异步读取文件
1.assets文件夹下创建txt
##2、 Promise封装文件读取
const fs = require('fs'); //fs 封装成一个promise const readFile = function(fileName){ return new Promise((resolve,rejects)=>{ fs.readFile(fileName,(err,data)=>{ if(err) rejects(err); resolve(data); }); }); }
3、调用promise
//promise readFile('./assets/a.txt').then(res=>{ console.log(res.toString()); //读取b.txt 文件 return readFile('./assets/b.txt'); }).then(res=>{ //获取b.txt文件内容; console.log(res.toString()); return readFile('./assets/c.txt'); }).then(res=>{ //获取c.txt文件内容; console.log(res.toString()); })
4、最后访问
需要切换到src目录下,使用node .\xxx.js 执行;
Generator 读取文件
//Generator 异步读取文件 const fs = require('fs'); //fs 封装成一个promise const readFile = function(fileName){ return new Promise((resolve,rejects)=>{ fs.readFile(fileName,(err,data)=>{ if(err) rejects(err); resolve(data); }); }); } //Generator 函数定义; function * gen(){ yield readFile('./assets/a.txt'); yield readFile('./assets/b.txt'); yield readFile('./assets/c.txt'); } let g1 = gen(); g1.next().value.then(res=>{ console.log(res.toString()); return g1.next().value //b.txt }).then(res=>{ console.log(res.toString()); return g1.next().value //c.txt }).then(res=>{ console.log(res.toString()); })
2 读取文件
async-await 读取多个文件
1、通过promise封装文件读取
//Generator 异步读取文件 const fs = require('fs'); //fs 封装成一个promise const readFile = function(fileName){ return new Promise((resolve,rejects)=>{ fs.readFile(fileName,(err,data)=>{ if(err) rejects(err); resolve(data); }); }); }
2、async-await 读取文件内容;
// async-await 异步读取多个文件 async function fn(){ let f1 = await readFile('./assets/a.txt'); console.log(f1.toString()); let f2 = await readFile('./assets/b.txt'); console.log(f2.toString()); let f3 = await readFile('./assets/c.txt'); console.log(f3.toString()); } //调用函数 fn();
3、整体代码:
//Generator 异步读取文件 const fs = require('fs'); //fs 封装成一个promise const readFile = function(fileName){ return new Promise((resolve,rejects)=>{ fs.readFile(fileName,(err,data)=>{ if(err) rejects(err); resolve(data); }); }); } // async-await 异步读取多个文件 async function fn(){ let f1 = await readFile('./assets/a.txt'); console.log(f1.toString()); let f2 = await readFile('./assets/b.txt'); console.log(f2.toString()); let f3 = await readFile('./assets/c.txt'); console.log(f3.toString()); } //调用函数 fn();
4、执行
Promise.all([]) 读取
//Generator 异步读取文件 const fs = require('fs'); //fs 封装成一个promise const readFile = function(fileName){ return new Promise((resolve,rejects)=>{ fs.readFile(fileName,(err,data)=>{ if(err) rejects(err); resolve(data); }); }); } // async-await 异步读取多个文件 async function fn(){ let [a,b,c] = await Promise.all([ readFile('./assets/a.txt'), readFile('./assets/b.txt'), readFile('./assets/c.txt'), ]); console.log(a.toString()); console.log(b.toString()); console.log(c.toString()); } //调用函数 fn();