発生している問題
普段は普通に動くが、
たまに、ある箇所のsetTimeoutの呼び出し時間が異様に長くなる。
また、他の処理は普通に動く。
該当のソースコード
Javascript
1count=0; 2function reload(charactor){ 3 console.log("1"); 4 count++; 5 6 //処理省略 7 8 //reloadを呼び出し 9 console.log("2"); 10 myTimer=setTimeout("reload("+charactor+")",40); 11 12 if(count==text[serifukaisu].length){ 13 clearTimeout(myTimer); 14 count=0; 15 serifukaisu++; 16 } 17 console.log("3"); 18}
---追記 余計な情報も多いのですが、コードを丸々コピペしました。
Javascript
1var serifutemp=document.getElementById('pan2serifu').textContent; 2var text=serifutemp.split(","); 3 4function reload(charactor){ 5 console.log("1"); 6 count++; 7 //要素ノードオブジェクト 8 if(charactor===1){ 9 $('#novelsakujo').attr('id',"novel"); 10 var novel=document.getElementById('novel'); 11 $('#novel2').attr('id',"novelsakujo2"); 12 $('#nareta').attr('id',"naretasakujo"); 13 }else if(charactor===2){ 14 $('#novelsakujo2').attr('id',"novel2"); 15 var novel=document.getElementById('novel2'); 16 $('#novel').attr('id',"novelsakujo"); 17 $('#nareta').attr('id',"naretasakujo"); 18 }else if(charactor===3){ 19 $('#naretasakujo').attr('id',"nareta"); 20 var novel=document.getElementById('nareta'); 21 $('#novel').attr('id',"novelsakujo"); 22 $('#novel2').attr('id',"novelsakujo2"); 23 } 24 25 if(skipflag==1){ 26 clearTimeout(myTimer); 27 return 0; 28 } 29 if(text[serifukaisu].substr(count-1,4)=="brbr"){ 30 count=count+4; 31 novel.insertAdjacentHTML('beforeend','<br>'); 32 } 33 if(text[serifukaisu].substr(count-1,2)=="#r"){ 34 count=count+2; 35 var element = document.createElement('span'); 36 element.setAttribute('class', 'red'); 37 element.innerHTML = text[serifukaisu].substr(count-1,1); 38 novel.appendChild(element); 39 }else if(text[serifukaisu].substr(count-1,2)=="&b"){ 40 count=count+2; 41 var element = document.createElement('span'); 42 element.setAttribute('class', 'f34pt'); 43 element.innerHTML = text[serifukaisu].substr(count-1,1); 44 novel.appendChild(element); 45 }else if(charactor===2||charactor===3){ 46 var texttemp=text[serifukaisu].substr(0,text[serifukaisu].length-2); 47 var textNode=document.createTextNode(texttemp.substr(count-1,1)); 48 novel.appendChild(textNode); 49 }else{ 50 var textNode=document.createTextNode(text[serifukaisu].substr(count-1,1)); 51 novel.appendChild(textNode); 52 } 53 console.log("2"); 54 if(hayoflag===0){ 55 myTimer=setTimeout("reload("+charactor+")",40); 56 }else{//メッセージ表示中にエンターを押した場合表示速度を早くする 57 myTimer=setTimeout("reload("+charactor+")",0); 58 } 59 if(count==text[serifukaisu].length){ 60 clearTimeout(myTimer); 61 count=0; 62 serifukaisu++; 63 } 64 console.log("3"); 65}
試したこと
ログの期待値は
123123123...と短時間で続くこと。
しかし、123は一瞬で表示されるが、次の1が表示されるまで、2秒近くかかる。
また、ブラウザをスーパーリロードしても現象は直らないが、
ブラウザを再起動すると直る。
しかし、何日かするとまた同じ現象が発生する。
ちょっとまじでわからないので、可能性だけでも示唆してもらえるとありがたいです。
よろしくお願いします。
補足情報(FW/ツールのバージョンなど)
使用ブラウザ:Google chrome(84.0.4147.105)
OS: windows10
回答2件
あなたの回答
tips
プレビュー