Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何同步Node.Js中的文件写入_Node.js - Fatal编程技术网

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

如何同步Node.Js中的文件写入,node.js,Node.js,我正在使用EJS compile创建通知模板,我想知道如何将文件并行写入文件系统,并在保存所有文件后发送通知 请参阅下面我使用的代码片段 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;

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

请参阅下面我使用的代码片段

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);
}
var fs=require('fs');
var ejs=需要('ejs');
var arrayOfData=[someData]//从数据库准备数据
//遍历数据
对于(变量i=0;i

请提供帮助。

您可以使用一个名为Async的强大实用程序库,特别是它的
并行方法:。
下面是一个例子:

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

您可以使用一个名为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');
})
用于您的用例

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

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

你能接受其中一个答案作为解决方案吗?你能接受其中一个答案作为解决方案吗?