node-使用promise, generator, async/await 读取文件的方法
2018-02-26 11:51
751 查看
在node中,读取文件的模块是 fs,分为同步读取和异步读取。
JavaScript 在发展过程中,共经历了回调函数、Promise 对象、Generator 函数,async 函数来处理异步。我们接下来就来看一下 async 函数如何更优雅的处理异步。假设我们需要分别读取 a、b、c 三个文件,具体代码如下:
const fs = require('fs'); // 同步读取文件 let buf = fs.readFileSync('a.text'); // 异步读取文件 fs.readFile('a.text', (err, data) => { if (err) { console.log('读取文件失败'); } else { console.log(data); } });
JavaScript 在发展过程中,共经历了回调函数、Promise 对象、Generator 函数,async 函数来处理异步。我们接下来就来看一下 async 函数如何更优雅的处理异步。假设我们需要分别读取 a、b、c 三个文件,具体代码如下:
对 fs 模块进行 Promise 封装
const readFile = function (src) { return new Promise((resolve, reject) => { fs.readFile(src, (err, data) => { if (err) reject(err); resolve(data); }); }); };
Promise 的写法
readFile('a.text').then(data => { console.log(data.toString()); return readFile('b.text'); }).then(data => { console.log(data.toString()); return readFile('c.text'); }).then(data => { console.log(data.toString()); });
Generator 的写法
function * ascReadFile () { yield readFile('a.text'); yield readFile('b.text'); yield readFile('c.text'); } let g = ascReadFile(); g.next().value.then(data => { console.log(data.toString()); return g.next().value; }).then(data => { console.log(data.toString()); return g.next().value; }).then(data => { console.log(data.toString()); });
async 函数写法
async function asyncReadFile(){ let a = await readFile('a.text'); console.log(a.toString()); let b = await readFile('b.text'); console.log(b.toString()); let c = await readFile('c.text'); console.log(c.toString()); } asyncReadFile();
相关文章推荐
- 使用J2SE API读取Properties文件的六种方法
- 使用J2SE API读取Properties文件的六种方法(1)
- linux下如何读取使用iso 镜像文件的方法
- 使用JS创建文件再读取文件,读取文件再创建文件的方法
- 用vb.net读取INI配置文件的方法,使用API
- 使用J2SE API读取Properties文件的六种方法
- 使用J2SE API读取Properties文件的六种方法
- 使用J2SE API读取Properties文件的六种方法
- CMD文件中用FOR命令读取文本文件内容到变量,以及和PsExec搭配使用的方法和例子
- 使用RFileReadStream读取文件时,判断文件结束的方法
- 使用J2SE API读取Properties文件的六种方法
- 使用J2SE API读取Properties文件的六种方法(选择自 kindani 的 Blog )
- 使用getJSON方法读取json文件数据并处理
- 使用J2SE API读取Properties文件的六种方法(转)
- 使用J2SE API读取Properties文件的六种方法
- Inputstream读取文件,使用read()方法,判断尾标记需要注意的问题
- 使用J2SE API读取Properties文件的六种方法
- 使用J2SE API读取Properties文件的六种方法
- 使用J2SE API读取Properties文件的六种方法
- 使用J2SE API读取Properties文件的六种方法