我给出了下面简化的JavaScript问题。面向对象的JavaScript锁
var PROJ=(function(){
var tags={},
var lock=true;
function onLoadComplete(){}
this.Tag = function(userConfig,callBack){
function loadConfig(){
lock=false;
/* Do something privately having lock with me */
lock=true;
}
this.load(){
if(lock) loadConfig();
else setTimeout(load,1000);
// PROBLEM is this(above) load is calling OUTER load..!
}
return this;
};
this.load(){
var cb=onLoadComplete;
tags[uniqueID]=new Tag(userConfig,cb);
tags[uniqueID].load();
}
}).load();
我想在这里实现JavaScript锁。三个JavaScript标签对象被创建。 [新标签()]这些对象共享和修改PROJ中的一些公共数据。
我想通过执行标签释放锁定时访问公共数据。 setTimeout()中提到的这个负载正在调用PROJ的load()。
您应该解决您的代码。有语法错误(这些{}}括号可能会被浏览器忽略,所以你不会看到它),并且没有'load'函数的定义。 – Groo 2011-12-29 18:44:18
@Umesh Groo和FelixKing都声明,你的代码在合成上是不正确的,所以我们只能猜测你的问题。尽管这是从一个更大的背景中切割出来的,但请让它自我一致并且合理正确,否则你得到的答案只会是黑暗中的一个镜头。 – chuckj 2011-12-29 18:52:36