|
用户名:yinwm 笔名:眼镜 地区: tianjin-beijing 行业:其他 |
| 日 | 一 | 二 | 三 | 四 | 五 | 六 |
我思, 故...... 姑且算是我在吧
Start to learn Linux
Oracle 收购 InnoDB
Callback in JS
最近在做AJAX,感觉爽啊,同样功能的一个部分,一种传统的B/S实现方法,一种使用AJAX的方法,感觉真的事不一样的,AJAX给用户带来的感观效果要明显的好。
昨天也是写程序最爽的一天了。呵呵
我们采用的AJAX engine是java的DWR,很不错的一个engine。只是在使用的时候,觉得在一些场合还不是很好。
他的所有调用都是通过一个callback,一个以server端返回值作为参数的callback。这里也就出现了问题。愚以为,他的设计目的是在这个callback当中真正的去做一些改变页面显示的事情。但是有的时候我却只是想让他拿到一些东西,比如getName,以备后用。
那么其他的对这个name的页面 js object的访问何时开始呢?如何才能够保证在我使用这个name的时候,他已经从server端拿到了数据,并且已经在页面上初始化了呢?无法保证
比如
var name;
var _getName = function(result) {
name = result;
}
DWR.getName(_getName, uuid);
alert("name:" + name);
因为DWR是采用新建立的一个线程去做事情,所以alert和_getName的运行是在两个线程,我们也就无法保证他们的先后顺序了。这是一个很头疼的问题。
最终我们写了一个resource Monitor,来检测资源锁,在使用一些方法的时候,先要从Monitor里面checkout一个资源锁,如果是独占的话,下一个checkout将等待前面锁的checkin这样就好了。
改写后的代码是
var name;
Monitor.register("name");
var _getName(result) {
name = result;
Monitor.checkin("name");
}
var __alert(name) {
alert(name);
Monitor.checkin("name");
}
var runGetName(uuid) {
DWR.getName(_getName, uuid);
}
Monitor.checkout("name", runGetName, uuid);
Monitor.checkout("name", __alert, name);
注:以上很多都是伪代码,只是想说明一下问题。还有这个Monitor的版权问题,因为是在公司写的,那么他的版权应该数据公司。我和公司商量一下,如果可能的话,我还是极其想和大家分享的。
刚刚见到的一句话
接触python,想到javascript
mysql 4.1.2 开始可以多于32个key了
开始翻译cxc
fun with JUnit
upgrade to svn 1.2