Я хочу написать функцию, которая рекурсивно просматривает дерево узлов и в зависимости от того, существует ли определенный узел, либо регистрирует его значения, либо создает отсутствующий узел. Это должно быть довольно просто, но я не могу обернуть голову вокруг него.
мой код в настоящее время выглядит так:
let folderName = 'My Folder Name';
function init() {
let hasFolder = false;
let folderId = '';
chrome.bookmarks.getTree(function(itemTree){
itemTree.forEach(function(item){
processNode(item);
});
});
function processNode(node) {
// recursively process child nodes
if (node.children) {
node.children.forEach(function(child) {
processNode(child);
});
}
if (node.title == folderName) {
console.log(folderName + ' folder already exists: ID is ' + node.id);
hasFolder = true;
folderId = node.id;
}
}
}
Он работает нормально для вывода идентификатора узла, если папка уже существует, но теперь я хочу, чтобы она создала папку, если ее нет. Я решил, что мне нужно использовать обещание или обратный звонок. Код для создания папки прост:
function createFolder() {
chrome.bookmarks.create({
title: appName,
url: null
}, onBookmarkAdded)
}
Как и где бы я интегрировал это в мою текущую функцию? (init()
вызывается при первой установке приложения.)