如何在Node.Js中同步文件写入

时间:2016-05-05 14:22:30

标签: node.js

我正在使用EJS编译创建通知模板,我想知道如何将文件并行写入文件系统,并在保存所有文件后发送通知。

请参阅我使用的以下代码段

var fs = require('fs');
var ejs = require('ejs');

var arrayOfData = [someData]; //Prepare data from database

//Iterate through the data
for (var i = 0; i < arrayOfData.length; i++) {
   generateFileFromTemplate(arrayOfData[i],function(){});
}

function generateFileFromTemplate(templateData,callback)
{
   var outputFile = fileData.Id + ".html";
   var compiled = ejs.compile(fs.readFileSync('email-template.ejs', 'utf8'));
   var html = compiled(templateData);

   fs.writeFile(outputFile, html, callback);
}

请帮忙。

2 个答案:

答案 0 :(得分:1)

您可以使用名为Async的优秀实用程序库,尤其是其parallel方法:https://github.com/caolan/async#parallel。 这是一个例子:

var async = require('async');
/*-------------*/
var tasks = arrayOfData.map(function(data) {
    return function(cb) {
        generateFileFromTemplate(data,function(){});
        cb(null);
    }
});

async.parallel(tasks, function(err) {
    console.log('My job is done');
})

答案 1 :(得分:1)

将<{3}}用于您的用例

async.each(arrayOfData, 
  function(ele, next){
    generateFileFromTemplate(ele,function(){});
  }, 
  function(err){
    if(err) console.log('err', err);
    sendNotification();
  }
);