我有一个与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;
});
})
这将创建一个无限循环,当更新一个文本字段时,即当更改 textarea 的值时,这会触发平台键更新,这反过来又会无限地更改 textarea 的值......
编辑:基于最佳答案,我想出了以下构造函数:
function BounceProtection() {
var remoteUpdate = false; // remote toggle
this.local = function(cb) {
if (remoteUpdate) return;
cb();
};
this.remote = function(cb) {
remoteUpdate = true;
cb();
remoteUpdate = false;
};
}
这样,我可以根据需要生成bounceProtection对象来保护多个密钥,即使是js的异步特性。
var myKeyBP = new BounceProtection();