2016-05-05 5 views
0

私はEJSコンパイルを使用して通知テンプレートを作成しています。ファイルシステムに並列にファイルを書き込む方法を知りたいと思います。 。Node.Jsのファイル書き込みを同期させる方法

助けてください、私は

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); 
} 

を使用し、以下のコードスニペットを参照してください。

答えて

1

使用async.each

async.each(arrayOfData, 
    function(ele, next){ 
    generateFileFromTemplate(ele,function(){}); 
    }, 
    function(err){ 
    if(err) console.log('err', err); 
    sendNotification(); 
    } 
); 
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'); 
}) 
+0

本当に便利! – Sankaran

+0

いずれかの回答を解決策として受け入れることはできますか? – MayaLekova

関連する問題