Javascript Chrome.storage.sync.set/get-isn';行不通

Javascript Chrome.storage.sync.set/get-isn';行不通,javascript,google-chrome,google-chrome-extension,google-cloud-storage,Javascript,Google Chrome,Google Chrome Extension,Google Cloud Storage,构建chrome扩展时可能遇到的一个常见问题是,每次从chrome存储中检索数据时,它都返回未定义的数据。让我举个例子 var toStore = "This text shall be stored" //Script saves toStore and callback function provides confirmation chrome.storage.sync.set({"value": toStore}, function(){console.log("Value Saved!"

构建chrome扩展时可能遇到的一个常见问题是,每次从chrome存储中检索数据时,它都返回未定义的数据。让我举个例子

var toStore = "This text shall be stored"
//Script saves toStore and callback function provides confirmation
chrome.storage.sync.set({"value": toStore}, function(){console.log("Value Saved!")});
然后通过获取值的事件激活函数:

var storedItem = chrome.storage.sync.get('value', function(){
console.log("Value Got! Value is " + value)});
或者类似的东西,但在控制台中您的结果总是:

Value Got! Value is Undefined

我将告诉你如何避免这种情况。这也适用于chrome.storage.local.set。

当您使用chrome.store.sync.get获取存储值时,实际函数不会返回保存的值。相反,它返回var“data”,其中包含存储值的名称-值对:

chrome.storage.sync.get('value', function(data){
console.log("Value Got! Value is " + data.value)});
然后,该值以“data.[value-name]”的名称存储在函数中。如果你运行这个,你应该

Value Got! Value is This text shall be stored

我决不会想到
ar-storedItem=chrome.storage.sync.get('value',function(){console.log(“value-get!value是”+value)})
将记录除未定义之外的任何内容,或者记录一些本地定义的变量value的值。似乎你在回答一个只有对javascript了解很少的人才会有可能重复的问题,这并不是什么新鲜事。并且已经在其他s.o.问题中涉及。并且在官方文件中有明确的解释。