Javascript 苏丹;//爸爸解析的csv /** [ {城市:“安卡拉”,等级:“1”,价值:111}, {城市:“梅尔辛”,阶级:“1”,价值:112}, {城市:“İzmir”,类:“0”,值:113} ]临时表 */ 这个.talkWidthMain(); } /** *编写此函数的主要部分 *@parm{string}csv */ runPapa(csv){ 让结果=[]; 帕帕·帕斯(csv{ 标题:对, 下载:对, 工人:是的, fastMode:对, 完成:响应=>{ 结果=响应数据; } }); 返回true; } /* *宽幅主线程 * */ talkWidthMain(){ self.addEventListener(“message”,(msg)=>{//listen main 控制台日志(msg) 如果(msg.data.func==“城市”){//eğer anaçekidekden gelen mesaj da city varsa findCityByName()'içalıtır self.postMessage(this.findCityByName(msg.data.value));//komutunıktısın döndür。 //埃格尔·伊特森·安德雷比利尔辛,卡夫帕尔·卡鲁马什·伊辛。 }//否则,迪耶·丰基肖纳尔·艾恩斯 }) } /** *如果不存在,则在缓存中搜索在数组中查找并推入缓存。 *为函数执行此操作 *@param{string}inpVal *@公众 *@return{string} * */ findCityByName(inpVal){//您的find函数 让cache=this.caches.filter(cache=>cache.City.inpVal==inpVal);//检查以前是否使用过它 if(cache&&cache.length>0){//if用于返回此函数的结尾 返回缓存[0].City.res; } //不:if cache.City一个cache.Class leangth的和ara与result.set null的len相同 cache=this.results.filter(data=>data.City==inpVal)//[0].City;//否则在大数组中查找 this.caches.push({City:{inpVal,res:cache}});//并推入缓存 返回缓存;//vala } } 新的csvParseOpti(); //主要 如果导航器中有('serviceWorker'){//请检查浏览器支持 var work=new Worker(“opt.js”)//您需要另一个用于Worker的js文件 work.postMessage({func:“city”,value:“Mersin”})//发送任何数据 work.addEventListener(“消息”,函数(e){ console.log(e)//工作进程的响应 }) }

Javascript 苏丹;//爸爸解析的csv /** [ {城市:“安卡拉”,等级:“1”,价值:111}, {城市:“梅尔辛”,阶级:“1”,价值:112}, {城市:“İzmir”,类:“0”,值:113} ]临时表 */ 这个.talkWidthMain(); } /** *编写此函数的主要部分 *@parm{string}csv */ runPapa(csv){ 让结果=[]; 帕帕·帕斯(csv{ 标题:对, 下载:对, 工人:是的, fastMode:对, 完成:响应=>{ 结果=响应数据; } }); 返回true; } /* *宽幅主线程 * */ talkWidthMain(){ self.addEventListener(“message”,(msg)=>{//listen main 控制台日志(msg) 如果(msg.data.func==“城市”){//eğer anaçekidekden gelen mesaj da city varsa findCityByName()'içalıtır self.postMessage(this.findCityByName(msg.data.value));//komutunıktısın döndür。 //埃格尔·伊特森·安德雷比利尔辛,卡夫帕尔·卡鲁马什·伊辛。 }//否则,迪耶·丰基肖纳尔·艾恩斯 }) } /** *如果不存在,则在缓存中搜索在数组中查找并推入缓存。 *为函数执行此操作 *@param{string}inpVal *@公众 *@return{string} * */ findCityByName(inpVal){//您的find函数 让cache=this.caches.filter(cache=>cache.City.inpVal==inpVal);//检查以前是否使用过它 if(cache&&cache.length>0){//if用于返回此函数的结尾 返回缓存[0].City.res; } //不:if cache.City一个cache.Class leangth的和ara与result.set null的len相同 cache=this.results.filter(data=>data.City==inpVal)//[0].City;//否则在大数组中查找 this.caches.push({City:{inpVal,res:cache}});//并推入缓存 返回缓存;//vala } } 新的csvParseOpti(); //主要 如果导航器中有('serviceWorker'){//请检查浏览器支持 var work=new Worker(“opt.js”)//您需要另一个用于Worker的js文件 work.postMessage({func:“city”,value:“Mersin”})//发送任何数据 work.addEventListener(“消息”,函数(e){ console.log(e)//工作进程的响应 }) },javascript,jquery,json,performance,parsing,Javascript,Jquery,Json,Performance,Parsing,这只是缓存响应。感谢@eay提供的utlise workers和Memorization指南 缓存问题的解决方法如下- var cache = {}; function memoizer(fun){ return function (n){ if (cache[n] != undefined ) { jQuery("#_sub_region").html(cache[n]);

这只是缓存响应。

感谢@eay提供的utlise workers和Memorization指南

缓存问题的解决方法如下-

    var cache = {};
    function memoizer(fun){
        
        return function (n){
            if (cache[n] != undefined ) {
            jQuery("#_sub_region").html(cache[n]);  // This was changed
            return cache[n]
            } else {
            console.log(n);
              cache[n] = result
              return result
            }
        }
    }


感谢@eay为utlise员工提供指导和备忘录

缓存问题的解决方法如下-

    var cache = {};
    function memoizer(fun){
        
        return function (n){
            if (cache[n] != undefined ) {
            jQuery("#_sub_region").html(cache[n]);  // This was changed
            return cache[n]
            } else {
            console.log(n);
              cache[n] = result
              return result
            }
        }
    }


谢谢你的回复。工作人员解决了浏览器页面崩溃的问题,但搜索时间仍为2-3秒。是否有任何方法可以加快搜索速度或改进上述搜索循环以提高搜索速度?是否可以使用console.time调试代码?哪一部分需要很长时间。papa支持工人并具有快速模式。阅读文档。我将worker和fast标记添加到papa parse中。我用console.time和Papa Parse检查了一下,下载和解析文档大约需要150毫秒。while循环本身平均需要3000毫秒才能完成。我把计时器放在循环中,每个循环平均需要3毫秒才能完成。有没有办法减少这个问题?你能把你使用缓存的csvdid发给我吗?谢谢你的回复。工作人员解决了浏览器页面崩溃的问题,但搜索时间仍为2-3秒。是否有任何方法可以加快搜索速度或改进上述搜索循环以提高搜索速度?是否可以使用console.time调试代码?哪一部分需要很长时间。papa支持工人并具有快速模式。阅读文档。我将worker和fast标记添加到papa parse中。我用console.time和Papa Parse检查了一下,下载和解析文档大约需要150毫秒。while循环本身平均需要3000毫秒才能完成。我把计时器放在循环中,每个循环平均需要3毫秒才能完成。有没有办法减少这个?你能把你用的csvdid发给我吗?
function findCityByName(inputVal) {
  return results.filter(data => data.Value == inputVal)[0].City;
  }
function findClassbyValue(inputVal) {
  return results.filter(data => data.Value == inputVal)[0].Class;
  }

function GetChildRegions(inputVal){
var inputVal2 = inputVal;
var currentObject = results.filter(data => data.Value == inputVal2)[0];
currentIndex = results.indexOf(currentObject);
//move to next object
currentObject =  results.filter(data => data)[currentIndex + 1];
currentClass = findClassbyValue(currentObject.Value);
var RegionDropOption;

while (currentClass != 'level-0') {
  
  if(currentClass == 'level-1'){
  RegionDropOption += '<option value="' + currentObject.Value + '">' + currentObject.City + '</option>\n';
  currentIndex = results.indexOf(currentObject);
  currentIndex++;
  currentObject = results.filter(data => data)[currentIndex];
  currentClass = findClassbyValue(currentObject.Value);
  }
}
return RegionDropOption;
}
jQuery("#Parent_region").change(function() {
var selectedMainRegion = jQuery('#Parent_region').find(":selected").val();
jQuery("#child_region").html(GetChildRegions(selectedMainRegion));  

});
function memoizer(fun){
    let cache = {}
    return function (n){
        if (cache[n] != undefined ) {
          return cache[n]
        } else {
        console.log(n);
          **let result = fun(n)  // Result is Undefined here** 
          cache[n] = result
          return result
        }
    }
}
function GetSubRegion(selectedMainRegion){
if (typeof(subRegWorker) != "undefined") {
subRegWorker.terminate();
}
subRegWorker = new Worker("subRegWorker.js");
subRegWorker.onmessage = function(e) {
var workData = e.data;
jQuery("#_sub_region").html(workData);
subRegWorker.terminate();
return workData;
}
subRegWorker.postMessage(selectedMainRegion);
}

jQuery("#_main_region").change(function() {
var getCacheSub = memoizer(GetSubRegion);
var inputMainRegion = jQuery('#_main_region').find(":selected").val();
getCacheSub(inputMainRegion);
});
    var cache = {};
    function memoizer(fun){
        
        return function (n){
            if (cache[n] != undefined ) {
            jQuery("#_sub_region").html(cache[n]);  // This was changed
            return cache[n]
            } else {
            console.log(n);
              cache[n] = result
              return result
            }
        }
    }

function GetSubRegion(selectedMainRegion){
if (typeof(subRegWorker) != "undefined") {
subRegWorker.terminate();
}
subRegWorker = new Worker("subRegWorker.js");
subRegWorker.onmessage = function(e) {
var workData = e.data;
cache[n] = workData // This was changed
jQuery("#_sub_region").html(workData);
subRegWorker.terminate();
return workData;
}
subRegWorker.postMessage(selectedMainRegion);
}