Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.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 如何基于来自本地存储的另一个数据响应延迟XMLHttpRequest_Javascript_Google Chrome_Google Chrome Extension_Xmlhttprequest_Local Storage - Fatal编程技术网

Javascript 如何基于来自本地存储的另一个数据响应延迟XMLHttpRequest

Javascript 如何基于来自本地存储的另一个数据响应延迟XMLHttpRequest,javascript,google-chrome,google-chrome-extension,xmlhttprequest,local-storage,Javascript,Google Chrome,Google Chrome Extension,Xmlhttprequest,Local Storage,在上面的代码中,我试图从本地存储中获取一些参数到变量ppsParams,但我只想在本地存储请求失败时向CLOUD\u服务器发送请求,目前这两个请求都在执行中,因此,我如何延迟XMLHttpRequest。看起来像是chrome.storage.local.get是异步的,所以移动XMLHttpRequest代码如下所示 //function to download pps_compress.txt from cloud server for global parameter set PPs fu

在上面的代码中,我试图从本地存储中获取一些参数到变量
ppsParams
,但我只想在本地存储请求失败时向
CLOUD\u服务器发送请求,目前这两个请求都在执行中,因此,我如何延迟XMLHttpRequest。

看起来像是
chrome.storage.local.get
是异步的,所以移动XMLHttpRequest代码如下所示

//function to download pps_compress.txt from cloud server for global parameter set PPs
function get_pps_params()
{

    chrome.storage.local.get(['ppsParams'], function(result) {
        if (typeof(result) !== "undefined" && result != null){
            ppsParams = _base64ToArrayBuffer(result.ppsParams);
            console.log(ppsParams);
            dfd_pps.resolve();
            return;
        }
    });

    if(ppsParams == null)
    {
        var oReq = new XMLHttpRequest();
        oReq.open("GET", CLOUD_SERVER + 'get_pps_params', true);
        oReq.responseType = "arraybuffer";

        oReq.onload = function (oEvent) {
            console.log("Got pps params compressed!");
            ppsParams = oReq.response; // Note: not oReq.responseText
            chrome.storage.local.set({ppsParams: _arrayBufferToBase64(ppsParams)});
            dfd_pps.resolve();
        };

        oReq.send();
    }
}

谢谢,这是回调方法,在执行另一段代码之前,没有其他方法等待函数完成吗?您可以使用Promissions-,但对于这个简单的情况来说,这太过分了
function get_pps_params()
{

    chrome.storage.local.get(['ppsParams'], function(result) {
        if (typeof(result) !== "undefined" && result != null){
            ppsParams = _base64ToArrayBuffer(result.ppsParams);
            console.log(ppsParams);
            dfd_pps.resolve();
        }
        if(ppsParams == null)
        {
            var oReq = new XMLHttpRequest();
            oReq.open("GET", CLOUD_SERVER + 'get_pps_params', true);
            oReq.responseType = "arraybuffer";

            oReq.onload = function (oEvent) {
                console.log("Got pps params compressed!");
                ppsParams = oReq.response; // Note: not oReq.responseText
                chrome.storage.local.set({ppsParams: _arrayBufferToBase64(ppsParams)});
                dfd_pps.resolve();
            };

            oReq.send();
        }
        return;
    });
}