時にはサーバー上で、別のコードによってオブジェクトが変更されているときに、オブジェクトからデータを取得する必要がある場合があります。オブジェクトの表示中に最新のオブジェクト状態を保持することが重要です。私はこの問題を次のようなコードで解決しました。js、オブジェクトの状態監視
var Obj1={}
Obj1.actual=false;
//asynk part that modifies object
function modify_func(){
Obj1.actual=false;
//modifying operations
Obj1.actual=true;
}
//asynk part that gets object state
function view_func(){
if(Obj1.actual){
//operations
...
return;
}
//if not actual
var timer=setInterval(function(){
if(Obj1.actual){
//operations
...
clearInterval(timer)
}
},1000)
}
この2つの機能は、いつでも呼び起こすことができます。 しかし、実際にはsetIntervalとactualityフィールドを使うのは良い考えではないと思います。 この問題の解決策がありますか?
代わりに、イベントリスナーを実装することをおすすめします。したがって、変更について知りたいコールバックを登録し、変更が行われた後にそれらのコールバックを呼び出します。 –
@GerardvanHelden、サーバ上の別のリクエストハンドラにあるので、view_funcをcbに置くことはできません。また、modify_funcは10回しか実行できません。逆も同様です。 –