chrome扩展程序中的javascript回调函数

Hao Wu

我正在尝试理解由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()函数之前出现?

谢谢!

比尔

您对回调的理解不正确。传递给函数getTree的参数bookmarkTreeNodesvar 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的重要组成部分。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章