JavaScript Promise文件读取方法

文件读取的异步方法里,Promise算是比较清爽的一种写法。没有回调地狱,逻辑也更清晰,调试起来轻松多了。你写异步代码的时候要是还在一层层嵌套,那真的该试试这种写法。

Promise 的文件读取方式挺适合用户上传文件、读取配置文件这些场景。用法也简单,一看就懂。比如你可以用FileReader配合Promise来包一层:

function readFile(file) {
  return new Promise((resolve, reject) => {
    const reader = new FileReader();
    reader.onload = () => resolve(reader.result);
    reader.onerror = reject;
    reader.readAsText(file);
  });
}

用了async/await之后,代码就更整洁了,基本就像同步一样顺下来写:

async function handleFile(file) {
  try {
    const content = await readFile(file);
    console.log(content);
  } catch (err) {
    console.error('读取失败', err);
  }
}

嗯,这种写法你在做文件预览、读取文本配置的时候都挺方便。尤其是在浏览器环境下,FileReader已经够用,不用上更重的库。

想多了解异步操作怎么搞得更优雅?你可以看看Chengnuoshu Promise 异步控制工具,还有一些关于Ajax 异步操作RxJS 异步示例的文章也都蛮实用。

如果你经常用户上传、文件导入之类的功能,建议你把这种Promise封装方式放进自己的工具库里,调起来方便,用起来也顺手。

md 文件大小:503B