Chrome 的扩展 API 广泛使用回调函数,因此我经常发现我遇到了范围界定问题。
例子
我正在创建一个选项页面,当我发现chrome.storage.sync.set/get
它似乎是完美的解决方案时。
在 options.js 中:
var myOptions = {
"option1": true,
"option2": false,
"option3": false
}
chrome.storage.sync.set(myOptions, function(){});
这就像一个魅力。所以现在在我的内容脚本中,我想访问和使用这些值:
// The documentation says you can pass null to retrieve all stored data
var myOptions = chrome.storage.sync.get(null, function(){});
aFunctionThatNeedsToKnowTheseOptions(myOptions);
哦哦!
不幸的是,你不能这样做。chrome.storage.sync.get()
不返回任何东西。所以我需要这样做:
chrome.storage.sync.get(null, function(myOptions){
var options = myOptions; // Hurray! I have my options
/* Now all the logic for my function has to be put
inside this callback. This function might need
to call other functions outside of this scope.
This is a mess.
*/
});
问题
如何使我的选项脱离chrome.storage
内容脚本中所有其他功能的范围?