如何根据来自本地存储的另一个数据响应延迟 XMLHttpRequest
How to defer a XMLHttpRequest based on another data response from local storage
//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();
}
}
在上面的代码中,我试图从本地存储中获取一些参数到变量 ppsParams
中,但我想仅在本地存储请求失败时才向 CLOUD_SERVER
发送请求,现在两者都在执行,所以我怎么能推迟 XMLHttpRequest。
看起来chrome.storage.local.get
是异步的,所以移动XMLHttpRequest代码如下所示
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;
});
}
//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();
}
}
在上面的代码中,我试图从本地存储中获取一些参数到变量 ppsParams
中,但我想仅在本地存储请求失败时才向 CLOUD_SERVER
发送请求,现在两者都在执行,所以我怎么能推迟 XMLHttpRequest。
看起来chrome.storage.local.get
是异步的,所以移动XMLHttpRequest代码如下所示
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;
});
}