フロント開発まとめ


1、ajaxリクエストを頻繁に送信する場合は、前のリクエストの送信が完了してから次のリクエストを送信することが望ましい.この場合、var bMadeRquest=false;グローバルフラグif(bMadeRquest)returnを定義します.//前の要求が返されなかった場合、new Ajaxは要求されません.Request(url,{parameters:pars,method:'get',onCreate:function(){bMadeRquest=true;//リクエスト開始時にtrue}に設定し、onComplete:function(originalRequest){bMadeRquest=false;//リクエスト終了後にリストア・・・        }     } );
2、ajaxリクエストが返す結果は特殊文字で区切られることが多いが、返す結果が空の場合、split後の配列のlengthも1であることを覚えている.これにより、forループも実行できます.だから、必ず返した結果に対してifの空判断を行います!この点はよく見落としがちだ.
3、ifは常に判断しなければならない.そうしないと、javaと報告しやすい.lang.Null PointerException異常.元の書き方:
					startPnt = MapUtil.getPoint(roadid,startMile);
					arrayListX.add(new Double(startPnt.getX()));
					arrayListY.add(new Double(startPnt.getY()));

ここではstartPntに対して空ではないかの判断は行われておらず,このような場合にはNull PointerException異常を報告する.次のように解決します.
					if(startPnt!=null){
						arrayListX.add(new Double(startPnt.getX()));
						arrayListY.add(new Double(startPnt.getY()));
					}else{
						System.out.println("startPnt is null");
					}

4、forサイクルにsetIntervalがある場合は、必ずbreadkを使う.そうでなければforループは継続し、intervalで点滅するのは前のi=0のオブジェクトではありません.
	for(var i=0;i<a.length;i++){
		var e = dojo.byId(a[i]);
		if(e){
			if(e.id==id){
				var j = 10;
				var  ii = window.setInterval(function(){
					if(j>0){
						if(j%2==0){
							e.style.border = '1px solid #EE82EE';
						}else{
							e.style.border = '1px solid #CCCCCC';
						}
						j--;
					}else{
						window.clearInterval(ii);
						ii = null;
					}						
				},100);	
				break;			
			}
		}
	}
 
5、forループは一般的に2つの面で使用され、1つの目的は単純にすべての値を遍歴することである.もう1つは、条件に合致する記録を探すことです.後者であればforにif条件を加えて等しい.条件を満たすレコードが1つしか必要ないと判断した場合、ifが一致したときにbreakを追加することが望ましい.これにより、実行の効率をコミットできます.