下記の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ロックを実装しようとしています。 3つのJavaScriptタグオブジェクトが作成されます。 [new Tag()]これらのオブジェクトは、PROJで使用できるいくつかのパブリックデータを共有および変更します。
タグを実行してロックが解除されたときにパブリックデータにアクセスする必要があります。 setTimeout()に記述されているこの負荷は、PROJのload()を呼び出しています。
あなたはあなたのコードを修正する必要があります。構文エラーがあります(ブラウザで{{}}かっこが無視される可能性があります)、 'load'関数の定義はありません。 – Groo
@UmeshはGrooとFelixKingの両方が述べているように、あなたのコードは構文的には正しくないので、あなたの問題についてしか推測できません。これははるかに大きな文脈から切り離されていますが、それを自己一貫性のあるものにするか、構文的に正しいものにするか、あなたが得る答えは暗闇の中で一撃になります。 – chuckj