javascript - How to defer a XMLHttpRequest based on another data response from local storage -


//function download pps_compress.txt cloud server 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();     } } 

in above piece of code trying parameters varaible ppsparams local storage, want send request cloud_server if local storage request fails, right both being executed, how can defer xmlhttprequest.

looks chrome.storage.local.get asynchronous, move xmlhttprequest code shown below

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;     }); } 

Comments