下面的函数以递归方式在文件夹中打印Chrome书签。在最后的递归循环被处理后,我怎么能改变下面的函数来调用另一个函数呢? chrome.bookmarks.getChildren()
是异步的,这使得很难知道函数何时处理完所有事情。异步递归函数结束后回调
谢谢。
for (var i = 0; i < foldersArray.length; i++) {
// The loop makes several calls with different folder IDs.
printBookmarks(foldersArray[i]);
}
// I'd like any code here to be run only after the above has
//finished processing
function printBookmarks(id) {
chrome.bookmarks.getChildren(id, function(children) {
children.forEach(function(bookmark) {
console.debug(bookmark.title);
printBookmarks(bookmark.id);
});
});
}
编辑:对不起,我不认为我是在初始代码示例中清楚。我更新了代码,通过多次调用该函数来显示我在异步函数中遇到的问题。我想要printBookmarks
函数调用后的任何代码等待所有printBookmarks
函数完成处理。
对不起,我不认为我清楚我的示例代码。您的代码适用于打印书签的单个调用,但是我想知道何时所有调用printBookmarks(异步)都已完成处理。我更新了我的代码。谢谢。 – usertest 2011-02-19 06:26:11