【问题标题】:javascript callback function in chrome extensionchrome扩展中的javascript回调函数
【发布时间】:2015-06-19 23:24:08
【问题描述】:

我正在尝试理解由 javascript 编写的 chrome 扩展代码。但是有一段关于回调函数的代码我不明白。

function dumpBookmarks(query) {
  var bookmarkTreeNodes = chrome.bookmarks.getTree(
function(bookmarkTreeNodes) {
  $('#bookmarks').append(dumpTreeNodes(bookmarkTreeNodes, query));
});
} 

根据我的理解,我发现回调函数应该在后面运行,这意味着内部函数中的 bookmarkTreeNodes 应该来自 var bookmakrTreeNodes(来自 chrome.bookmakrs.getTree 函数)。但是,当我将 var bookmarkTreeNodes 更改为其他任何内容并保持内部函数中的 bookmarkTreeNodes 相同时,程序运行良好。这个结果和我的想法冲突。

内部函数中的 bookmakrTreeNodes 来自哪里?怎么会出现在 chrome.bookmarks.getTree() 函数之前?

谢谢!

【问题讨论】:

    标签: javascript google-chrome callback


    【解决方案1】:

    您对回调的理解不正确。您传递给getTree 的函数接受一个参数bookmarkTreeNodes,它与您在函数外部声明的var bookmarkTreeNodes 无关。

    想象一下:函数chrome.bookmarks.getTree 是这样写的。

    chrome.bookmarks.getTree = function (cb) {
        var bookmarkTreeNodes;
        /* do some work to get the tree nodes */
        cb(bookmarkTreeNodes);
        // maybe return something here. 
        //This is the value your "var bookmarkTreeNodes" would take on eventually
        //but as you can see, it has nothing to do with what is passed to your callback.
    }
    

    现在你看到回调的参数来自哪里了吗?我建议您阅读更多关于处理回调的内容,因为它是 JavaScript 中非常重要的一部分。

    【讨论】:

    • 非常感谢!我明白了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-25
    • 1970-01-01
    • 2021-03-07
    • 2013-11-18
    • 2011-08-21
    • 1970-01-01
    • 2012-01-19
    相关资源
    最近更新 更多