javascript - 使用 chrome api 在 javascript 中调用嵌套回调函数

标签 javascript function asynchronous google-chrome-extension

chrome.bookmarks.create({parentId: nodeId, title: title},function(bmNode) {
  chrome.windows.getCurrent(function(window) {
     chrome.tabs.getAllInWindow(window.id, function(tabs) {
        for(var i=0; i<tabs.length; i++) {
           chrome.bookmarks.create({parentId: bmNode.id, title:tabs[i].title,
                                   url:tabs[i].url});
        }
     });
   });
});

基本上,我试图获取当前窗口中所有打开的选项卡,然后创建一个书签文件夹并将所有选项卡添加到其中。以前一直好好的,突然就不行了。根文件夹书签已创建,但链接未添加到该文件夹​​。

我知道它有很多异步的嵌套调用,但我如何确保它们全部执行。

最佳答案

在我看来,当您引用 bmNode 时,它​​是 null。

我将同步创建 bmNode,然后枚举选项卡。

var bmNode = chrome.bookmarks.create({parentId: nodeId, title: title} )

  chrome.windows.getCurrent(function(window) {
     chrome.tabs.getAllInWindow(window.id, function(tabs) {
        for(var i=0; i<tabs.length; i++) {
           chrome.bookmarks.create({parentId: bmNode.id, title:tabs[i].title,
                                   url:tabs[i].url});
        }
     });
   });

关于javascript - 使用 chrome api 在 javascript 中调用嵌套回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8577820/

相关文章:

javascript - 将 JavaScript 与 JSF 和 Facelets 结合使用

javascript - 检查 Bootstrap 选项卡内容是否滚动到末尾

javascript - 在开始日期和结束日期之间添加一行

javascript - 自定义谷歌地图无法正确渲染,分辨率不佳

python - 需要帮助在 Python 中返回具有多个变量的字符串

swift - RxSwift 异步请求设计

asynchronous - 如何在 Flutter 的异步任务中启动异步任务?

javascript - 无法在单独的js文件中调用jquery自定义函数

c - 传递可变数量的参数

python - 类中的 multiprocessing.apply_async(myfunc, ...) 似乎没有调用 myfunc