Я написал следующий код для создания объекта с настройкой KEYS для комментариев заголовков, а VALUES - для файлов, разделяющих эти заголовки. Если нет заголовка, имя файла записывается в файл. Я хотел бы написать этот объект заголовка в файл, но он записывается до завершения объекта. Я понимаю, почему это происходит, но я не могу решить проблему. Вот код для записи объекта в файл:Записать в файл после завершения задач async
stringObj = JSON.stringify(allHeaders, null, 4);
fs.writeFile(currentHeads, stringObj, function(err) {
if (err) {
console.log(err);
}
});
console.log('Complete!');
А вот остальная часть сценария:
"use strict";
var fs = require('fs'),
dive = require('dive'),
subdirs = require('subdirs'),
cpFile = __dirname + "/" + "header.txt",
noCopy = __dirname + "/" + "noCopyright.txt",
currentHeads = __dirname + "/" + "currentHeaders.txt",
re = /(\/\*(?:(?!\*\/).|[\n\r])*\*\/)/, // matches first multi-line comment
walkDir,
allHeaders = {},
stringObj,
top;
fs.readFile(cpFile, 'utf8', function(err, copyRight) {
subdirs(__dirname, 1, function(err, dirs) {
if (err) {
return console.log(err);
}
dirs.forEach(function(dir) {
if (dir.match(/.*\/src$/)) {
dive(dir, { all: false }, function(err, file) {
if (err) {
return console.log(err);
}
fs.readFile(file, 'utf8', function(err, data) {
if (err) {
return console.log(err);
}
if (data.match(re)) {
top = data.match(re);
if (allHeaders[top[0]]) {
allHeaders[top[0]].push(file);
} else {
allHeaders[top[0]] = [file];
}
} else {
fs.appendFile(noCopy, file + "\n", function(err) {
if (err) {
return console.log(err);
}
});
}
});
});
}
});
});
});
Я очень ценю, что вы нашли время, чтобы написать это для меня! –