Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从chrome.storage.sync.Get获取更多价值_Javascript_Google Chrome Extension_Local Storage - Fatal编程技术网

Javascript 从chrome.storage.sync.Get获取更多价值

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”、

我想发送ajaxrequest,但首先我必须从chrome.storage.sync获得3个值。这是一个异步函数,因此我无法将其作为变量并发送请求

我想这样做(我知道这是异步的,所以我无法获取变量)

如果仔细查看,您会发现第一个参数可能是:

字符串或字符串或对象数组

要获取的单个键、要获取的键列表或指定默认值的字典(请参见对象的说明)。空列表或对象将返回空结果对象。传入null以获取存储的全部内容

这意味着您可以传递所需的字符串键数组:

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()