NodeJS – 如何asynchronous读取多个文件并将读取内容写入一个文件

我想在NodeJS中asynchronous读取多个文件。 阅读顺序无关紧要时,同时阅读多个文件是很好的select。

但是,我试图将这些文件的内容一起写入一个文件。 我可以写一个文件很好,但我怎样才能确保所有的文件已经被读取之前,我把所有的内容写入一个文件?

用户承诺通过以下方法之一

  1. 创build承诺,读取文件时parsing每一个
  2. 使用蓝鸟为fs创build类似于Promise的方法
  3. 使用fs-promise模块

然后将所有这些诺言保存到数组中并使用Promise.all

其他的方式可以迭代variables,即var filesRead = 0 。 当读取文件时,增加这个数字filesRead++ 。 在这之后,如果你阅读所有的文件,总是检查,如果是的话,你可以写

 if (filesRead === numberOfFilesToRead){ //write things } 

使用async

 'use strict'; let fs = require('fs'), async = require('async'), inputs = ['in1', 'in2'], output = 'out'; function fuse(inputs, output, callback) { async.map(inputs, (path, callback) => { fs.readFile(path, (data) => { callback(null, data); }); }, (err, contents) => { if(error) { callback(error); } else { fs.writeFile(output, contents.reduce((a, b) => { return a + b; }), (error) => { callback(error); }); } }); } fuse(inputs, output, (error) => { if(error) { console.log('Error: ' + error); } else { console.log('OK'); } });