Thanks for the response. It's definitely a messy API for a simple usecase. here's the solution I went with:
function collectFoldersAsTags(bookmark, tags, callback) { if (bookmark.parentId) { chrome.bookmarks.get(bookmark.parentId, function(results) { var mark = results[0]; tags.push(mark.title); collectFoldersAsTags(mark, tags, callback); }); } else { callback(tags); } } chrome.bookmarks.onCreated.addListener(function(id, bookmark) { if (bookmark.url) { collectFoldersAsTags(bookmark, [], function(tags) { alert(tags.join(' ')); }); } }); On Dec 15, 12:09 am, Marcos Aruj <marcos.a...@gmail.com> wrote: > Maybe something like this: > > function bookmarkFoldersAsTags(aTags, aBookmark) { > if (!aTags) > aTags = []; > > if (!aBookmark.parentId) > return; > > function getBookmarkCallback(aResults) { > var mark = aResults[0]; > aTags.push(mark.title); > bookmarkFoldersAsTags(aTags, mark); > } > chrome.bookmarks.get(aBookmark.parentId, getBookmarkCallback); > > } > > I just wrote it here without trying and I haven't used the bookmarks API > yet. Just used the code you provided and tweaked it a bit to be recursive. > You should end up with the aTags array filled with your tags, which you may > join later. Hopefully this helps, or maybe someone else has a better/working > alternative. > > Good night! > > > > > > On Mon, Dec 14, 2009 at 11:07 PM, Ryan <ryan.son...@gmail.com> wrote: > > I'm trying to navigate from my bookmark listener to the root node and > > collect all of the folder hierarchy, but the bookmarks API uses async > > callbacks which is quite difficult to work with. > > > This code doesn't work because the while loop is stuck in an infinite > > loop and the callback does not interupt the loop correctly. Is there > > some other way? > > > ex: > > function bookmarkFoldersAsTags(bookmark) { > > var tags = []; > > > var mark = bookmark; > > while (mark.parentId) { > > chrome.bookmarks.get(mark.parentId, function(results) { > > mark = results[0]; > > tags.push(mark.title); > > }); > > } > > return tags.join(' '); > > } > > > chrome.bookmarks.onCreated.addListener(function(id, bookmark) { > > if (bookmark.url) { > > console.debug(bookmarkFoldersAsTags(bookmark)); > > } > > }); > > > -- > > > You received this message because you are subscribed to the Google Groups > > "Chromium-extensions" group. > > To post to this group, send email to chromium-extensi...@googlegroups.com. > > To unsubscribe from this group, send email to > > chromium-extensions+unsubscr...@googlegroups.com<chromium-extensions%2Bunsu > > bscr...@googlegroups.com> > > . > > For more options, visit this group at > >http://groups.google.com/group/chromium-extensions?hl=en. > > -- > Marcos Aruj Alvarez > Ingeniero de Software > ------------------------------- > marcos.a...@gmail.com > ----- -- You received this message because you are subscribed to the Google Groups "Chromium-extensions" group. To post to this group, send email to chromium-extensi...@googlegroups.com. To unsubscribe from this group, send email to chromium-extensions+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/chromium-extensions?hl=en.