promise异步读写
我们用promise配合async,await
来写文件异步读写
本来我们的代码是这样的
let fs = require('fs');
fs.readFile('./data.txt','utf-8',(err, data) => {
if (err) {
console.log('readFile fail');
} else {
console.log(data.toString());
fs.writeFile('./1.txt','utf-8',err=>{
if (err) {
console.log('writeFile fail');
} else {
console.log('writeFile success');
fs.stat('./1.txt',(err,stat)=>{
if (err) {
console.log('stat fail');
} else {
console.log(stat);
}
})
}
})
}
})
然后我们用promise改写一下
首先
我们把readFile,writeFile,stat
全都各自封装成promise
然后再把三个promise并排调用一下就可以了
这样看上去就好像是同步的一样
let fs = require('fs');
let readFilePromise = () =>{
return new Promise(function (resolve, reject) {
fs.readFile('./data.txt',(err, data) => {
if (err) {
reject(err);
} else {
resolve(data);
}
})
})
}
let writeFilePromise = (data)=>{
return new Promise(function (resolve, reject) {
fs.writeFile('./1.txt',data,err=>{
if (err) {
reject(err);
} else {
resolve('readFile success');
}
})
})
}
let statPromise = () =>{
return new Promise(function (resolve, reject) {
fs.stat('./1.txt', (err, stat) => {
if (err) {
reject(err);
} else {
resolve(stat);
}
});
})
}
let test = async() =>{
let data = await readFilePromise();
console.log(data)
let info = await writeFilePromise(data);
console.log(info)
let stat = await statPromise();
console.log(stat)
}
test()