我有我與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();
怎麼會這樣? 'on(「set」)'監聽器中的'$ textarea.val()'不會觸發'change'事件... – Bergi
它會在遠程用戶的myKey.on被觸發時觸發,然後觸發一個change事件然後做了myKey.set大家遠程...(循環) – Pykler
然後,只需刪除該代碼觸發'change'事件的textarea的時候'的'myKey'發生set'事件? – Bergi