chrome扩展中的javascript回调函数

时间:2015-06-19 14:48:37

标签: javascript google-chrome callback

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

createCommand

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

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

谢谢!

1 个答案:

答案 0 :(得分:0)

您对回调的理解不正确。传递给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的一个非常重要的部分。