js中异步请求的问题
通过.ajax()发送三个请求,url地址是关键,用到mootools里的Hash.如果请求的url不在hash里,则将发请求,得到data,将(url,data)存到hash里,如果url存在hash的话就通过url在hash取data,不用发请求.
var CommonCascade = new Class({
loadData: function() {
			var self = this;
			var path = self.options.path; //传进来的url
			CommonCascade.templHash = CommonCascade.templHash || new Hash();
			eventListener.addEvent('loaded', function() {
				var data = CommonCascade.templHash.get(self.options.path);
				console.log(data);
				
			});
		//	if (!CommonCascade.loading) {
				if (CommonCascade.templHash.has(path)) {
					var tempResult = CommonCascade.templHash.get(path);
					self.createOptions(tempResult, jQuery(self.options.firstSelect), '1');
					self.bindEvent(tempResult);
				} else {
					jQuery.ajax({
						url: this.options.path,
						dataType: 'json',
						beforeSend: function() {
							CommonCascade.loading = true;
						},
						success: function(data) {
							if (data.data) {
								data = data.data;
							}
							CommonCascade.templHash.set(path, data);										eventListener.fireEvent('loaded');
						
						},
						complete: function() {
							CommonCascade.loading = false;
						}
					});
				}
			// } 
		},
});
这里是一个类,如果实例化三个这种情况.这里if被注释了,有两个url是相同的,本来发两次请求,这个发了三次请求.如果加上if只会请求一次,hash里值存了一个.
              
------解决方案--------------------  CommonCascade.loading = true; ,CommonCascade 是全局的变更,只能保存一个状态
  所以加上判断就变成1次了
 改成,CommonCascade 加上 urls 对象以url为KEY
   CommonCascade.urls[url].loading   //这样状态就独立开来了
-------------
你试一下,ajax直接开启缓存是不是也就实现你要的功能了
------解决方案--------------------  new Class({
  urls:{}, //这加个urls 试试 
loadData: function() {
------解决方案--------------------