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();