GoInstantと同期しているテキスト領域があります。コードは次のようになります。
var myRoom = platform.room('myRoom');
var myKey = myRoom('myKey');
// Listen to set events on the platform key and update a textarea
myKey.on('set', function(textAreaContent) {
$('textarea').val(textAreaContent);
});
// When the textarea changes, set the platform key
$('textarea').on('change', function(){
var textAreaContent = $(this).val();
myKey.set(textAreaContent, function(err) {
if (err) throw err;
});
})
これにより、1 つのテキスト フィールドを更新するときに無限ループが作成されます。つまり、テキストエリアの値を変更すると、プラットフォーム キーの更新がトリガーされ、テキストエリアの値が無限に変更されます ...
編集:トップの回答に基づいて、次のコンストラクターを思いつきました:
function BounceProtection() {
var remoteUpdate = false; // remote toggle
this.local = function(cb) {
if (remoteUpdate) return;
cb();
};
this.remote = function(cb) {
remoteUpdate = true;
cb();
remoteUpdate = false;
};
}
このようにして、js の非同期性でも複数のキーを保護するために、必要に応じて bounceProtection オブジェクトを生成できます。
var myKeyBP = new BounceProtection();