我的博客中有82個項目,即blogs.I要將整個文件寫入文件,以便每個文件都應該有10個博客。因此,我的82個文件中包含9個文件。我寫的代碼爲ffollows如何在節點js中同步執行循環
blogList.forEach(function(i,v){
async.waterfall([
function (done) {
if ((v !== 0) && (v%10 === 0)){
var appendData = blogList.splice(0,10);
if(v === 10) {
pageNum = 1;
} else {
pageNum = v.toString()[0];
}
done('',appendData);
}
},function (testData,done) {
try {
var testingData = testData.toString();
testData.forEach(function(k,l){
fs.readFile(tagFileReferance, function read(err, referanceData) {
if (err) {
helper.logs('prepareAmpBlogList','blog',err,'console');
throw err;
}
tagFileData = referanceData.toString();
var text = k.text;
text = text.replace('style','class');
modData = tagFileData.replace('_CLASS_',k.class).replace('_IMAGE_',k.image).replace('_TITLE_',k.title).replace('_DATE_',k.date).replace('_AUTHOR_',k.author).replace('_TEXT_',k.metaText).replace('_BLOG_ID_',k.blog_id);
replacedTagsData.push(modData);
});
setTimeout(function() {
var newData = testList.toString();
var pageNum = v.toString()[0],
fileName = 'public/amp/test2/amp-blog-list-'+pageNum+'.html';
fs.writeFile(fileName, newData, function(err) {
if(err) {
return console.log(err);
}
console.log("The file was saved!");
});
}, 500)
});
} catch(e) {
console.log(e)
}
}],function (err) {
helper.logs('prepareAmpBlogList','blog',err,'console');
throw err;
});
})
但只有第一個文件寫入的迭代得到完成文件write.Its異步之前,任何人都可以請建議我help.Thanks。
爲了給您提供一個很好的答案,我們需要看看您在循環中要做什麼。現在你已經有了,那就是化妝代碼,因爲你在循環的每次迭代中都沒有做任何不同的事情,你正在做的事情影響寫這段代碼的最佳方式。請爲您的問題展示真實的代碼,而不僅僅是通用示例代碼。 – jfriend00
嗨jfriend..sure我會發布。 –
仍然在等待代碼和你實際正在做什麼的解釋。你從我這裏得到的答覆機會很快就會到期(睡覺的時間)。最重要的是,您的多個操作可以並行執行,或者必須按順序執行,以及在完成所有操作時需要的結果類型。 – jfriend00