You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js中不依赖第三方库用Promise并行读取两个CSV文件

原生Promise并行读取多个CSV文件方案

没问题!原生ES6 Promise自带的Promise.all()方法就是干这个的,完全不需要依赖RSVP这类第三方库,能轻松实现并行读取多个文件,之后在同一个.then()里拿到所有文件的内容。

先把你的readFile函数补全(你之前的代码没写完),把Node.js的fs.readFile封装成Promise形式:

const fs = require('fs');

// 封装fs.readFile为Promise,适配CSV文本读取
const readFile = (filename) => {
  return new Promise((resolve, reject) => {
    // 读取CSV时指定utf8编码,避免返回Buffer格式
    fs.readFile(filename, 'utf8', (err, data) => {
      if (err) {
        // 读取失败时抛出错误
        reject(err);
      } else {
        // 读取成功时返回文件内容
        resolve(data);
      }
    });
  });
};

接下来就可以用Promise.all()实现并行读取了:

// 替换成你的两个CSV文件路径
const csvFile1 = './first.csv';
const csvFile2 = './second.csv';

// 把两个读取任务的Promise传入Promise.all(),并行执行
Promise.all([readFile(csvFile1), readFile(csvFile2)])
  .then(([content1, content2]) => {
    // 这里就能同时访问两个文件的内容!
    // 结果顺序和传入的Promise数组完全对应
    console.log('第一个CSV内容:', content1);
    console.log('第二个CSV内容:', content2);
    
    // 在这里做后续处理,比如解析CSV、合并数据等
  })
  .catch((err) => {
    // 只要有一个文件读取失败,就会触发这里的错误捕获
    console.error('读取文件出错:', err);
  });

核心特性说明:

  • Promise.all()会并行执行所有传入的Promise,不会串行等待,效率拉满
  • 只有当所有Promise都成功resolve时,才会进入.then(),返回的数组结果顺序和传入的Promise数组严格对应
  • 任意一个Promise读取失败(触发reject),整个Promise.all()会立刻终止并进入.catch(),捕获第一个出现的错误

这样就完全用原生Promise实现了你要的需求,不用依赖任何第三方库~

内容的提问来源于stack exchange,提问作者Pramod K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:33:21