[英]Stopping and later continuing a recursive tree traversal
我正在使用广度优先深度优先(?)搜索来映射文件和文件夹。 我还将记录映射的数据,并构建一个显示文件夹及其文件/详细信息的JSON结构。
我想在任意点暂停执行,保存JSON数据,然后重新启动执行,并从我中断的地方继续执行。 这是我的代码(这是Google Apps脚本,本质上是美化了云计算的JavaScript)。
function MapDrive() {
var structure = {};
try {
var parentFolder = DriveApp.getRootFolder();
getChildFolders(parentFolder, structure, {path: parentFolder.getName()});
var blob = CreateJSONBlob(structure);
MailApp.sendEmail('myEmail', 'Folder Tree', 'Drive Map Attached' ,{ attachments: [blob]})
} catch (e) {
Logger.log(e.toString());
}
}
//Recursive breadth-first folder and file mapping
function TraverseDriveTree(parent, structure, path){
if(CheckExecutionTime()){
var childFolders = parent.getFolders();
var parentName = parent.getName();
//If there is no parent path add it
if(typeof path[parentName] === 'undefined'){
path[parentName] = {path: path.path};
}
//If parent doe snot exist in structure, then add it and it's files
if(typeof structure[parentName] === 'undefined'){
structure[parentName] = {};
structure[parentName]['files'] = GetFilesInfo(parent.getFiles(), path[parentName].path);
}
while (childFolders.hasNext()) {
var childFolder = childFolders.next();
var childfolderName = childFolder.getName();
path[parentName][childfolderName] = {path: path[parentName].path + " > " +childfolderName};
if(typeof structure[parentName][childfolderName] === 'undefined'){
structure[parentName][childfolderName] = {};
}
structure[parentName][childfolderName]["files"] = GetFilesInfo(childFolder.getFiles(), path[parentName][childfolderName].path);
// Recursive call for any sub-folders
TraverseDriveTree(childFolder, structure[parentName][childfolderName], path[parentName]);
}
} else {
SaveCurrentState(structure, parent, path)
}
}
我不需要有关保存JSON或类似内容的帮助。 我需要帮助,弄清楚如何在停止递归树遍历后继续它,并继续从我停下来的地方向数据结构添加项。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.