Javascript 从chrome.storage.sync.Get获取更多价值
我想发送ajaxrequest,但首先我必须从chrome.storage.sync获得3个值。这是一个异步函数,因此我无法将其作为变量并发送请求 我想这样做(我知道这是异步的,所以我无法获取变量) 如果仔细查看,您会发现第一个参数可能是: 字符串或字符串或对象数组 要获取的单个键、要获取的键列表或指定默认值的字典(请参见对象的说明)。空列表或对象将返回空结果对象。传入null以获取存储的全部内容 这意味着您可以传递所需的字符串键数组:Javascript 从chrome.storage.sync.Get获取更多价值,javascript,google-chrome-extension,local-storage,Javascript,Google Chrome Extension,Local Storage,我想发送ajaxrequest,但首先我必须从chrome.storage.sync获得3个值。这是一个异步函数,因此我无法将其作为变量并发送请求 我想这样做(我知道这是异步的,所以我无法获取变量) 如果仔细查看,您会发现第一个参数可能是: 字符串或字符串或对象数组 要获取的单个键、要获取的键列表或指定默认值的字典(请参见对象的说明)。空列表或对象将返回空结果对象。传入null以获取存储的全部内容 这意味着您可以传递所需的字符串键数组: chrome.storage.sync.get([“a”、
chrome.storage.sync.get([“a”、“b”、“c”],函数(项){
a=项目a;
b=项目b;
c=项目c;
});
要获取所有存储的值,只需传递
null
首先,正如@Deliaz所指出的,您可以一次获得所有3个参数。如果这些项目还不存在,您还应该将其与设置默认值的功能结合起来
另外,在代码中的某个地方,您需要等待存储值返回,因为对storage.get的调用是异步的。实际上,在检索到a、b或c之前,上面的代码将完成并继续下一行。如果你希望下一行是
sendwithajax("some url");
它不起作用,因为a、b和c还不可用
这通常是您应该如何构造代码的:
function sendDataWithAjax(url) {
chrome.storage.sync.get({"a": "", "b": "", "c": ""}, function (result) {
var info = {
aa: result.a,
bb: result.b,
cc: result.c
};
sendwithajax(url, info, process);
});
}
function sendwithajax(url, info, callback) {
$.ajax({
method: "GET",
url: url,
data: {data: info},
success: callback
});
}
function process(serverResult) {
}
注意,您也无法通过您的方法获得ajax调用的结果:
return $.ajax()
将返回有关ajax对象的信息,而不是结果。结果也将异步返回,因此在我的代码中,函数过程将仅在从存储中检索到数据后调用,并且ajax调用完成
return $.ajax()