下面的函數以遞歸方式在文件夾中打印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