这有效
chrome.storage.local.get('sizePref', function(items) { // Get size preferences from storage
var sizePref2 = items.sizePref.tops; // Set size to a var
console.log("You can get this " + sizePref2)
});
然而,当我尝试使它成为一个功能
function getSize(itemSize) {
chrome.storage.local.get('sizePref', function(items) { // Get size preferences from storage
var sizePref = items.sizePref.itemSize;
return (sizePref);
});
}
var mySize = getSize(tops);
console.log("This size that u are looking for is " + mySize)
它说“tops”未定义。
答案 0 :(得分:6)
当属性名称在变量中时,使用括号语法。所以,而不是:
items.sizePref.itemSize
你用这个:
items.sizePref[itemSize]
此外,您无法从异步回调中同步返回值。这种逻辑是错的。因此,您无法创建将返回结果的函数getSize()
。结果将在getSize()
已经返回后的某个时间段才可用。您必须将回调传递到getSize()
或让getSize()
返回承诺。
function getSize(itemSize) {
return new Promise(function(resolve) {
chrome.storage.local.get('sizePref', function(items) { // Get size preferences from storage
resolve(items.sizePref[itemSize]);
});
}
getSize("whatever").then(function(result) {
// code that uses the result here
});
答案 1 :(得分:0)
如果您不熟悉承诺(即不太可能),那么您也可以使用回调。我个人认为承诺是解决问题的更好方法。
git push heroku master