只对连续流作出一次反应的模式
Pattern for reacting to a continuous stream only once
在处理涉及鼠标的X、Y位置或任何时间的数据不断更新的事件时,使用什么模式在T周期内仅对特定情况做出一次反应?
例如,如果我正在通过accept选项收听可放下的handder, accept函数会不断执行以检查可放下性,但是我如何才能在T周期内只向用户弹出一次消息而不让弹出的消息轰击我的屏幕?
$scope.layoutDropOptions = {
hoverClass: 'ui-state-highlight',
multiple: true,
tolerance: 'pointer',
accept: function (elem) {
var isAField = $(elem).hasClass("field");
var isFromSideBar = $(elem).parent().hasClass("fields");
var onTheSame = $(this).find('#' + $(elem).attr("id")).size() != 0;
var alreadyExists = $('.layoutContainer').find('#' + $(elem).attr("id")).size() != 0;
if (alreadyExists && isFromSideBar) {
// need to pop only once:
//toaster.pop('warning',
// UserMessages.formBuilder.duplicateField.title,
// UserMessages.formBuilder.duplicateField.body);
return false;
}
return isAField && !onTheSame ? true : false;
}
}
我正在这样做,但我想也许有人能想出一个更好的方法来获得积分?
var lastCall = 0;
$scope.layoutDropOptions = {
hoverClass: 'ui-state-highlight',
multiple: true,
tolerance: 'pointer',
accept: function (elem) {
var isAField = $(elem).hasClass("field");
var isFromSideBar = $(elem).parent().hasClass("fields");
var onTheSame = $(this).find('#' + $(elem).attr("id")).size() != 0;
var alreadyExists = $('.layoutContainer').find('#' + $(elem).attr("id")).size() != 0;
if (alreadyExists && isFromSideBar) {
if (new Date() - lastCall > 1000) {
lastCall = new Date();
toaster.pop('warning',
UserMessages.formBuilder.duplicateField.title,
UserMessages.formBuilder.duplicateField.body);
}
return false;
}
return isAField && !onTheSame ? true : false;
}
}
相关文章:
- 窗口退出时的模式弹出窗口 - 重置一次
- Bootsrap模式在页面加载时触发,每个用户一次
- jQuery每5个工作小时重置一次颜色模式
- jQuery UI 对话框模式仅使用类选择器打开一次
- 简单模式弹出窗口显示每个会话一次
- 在javascript中获取除最后一次外的所有模式
- 使用lookahead获取javascript中模式的最后一次出现
- 如何使模式窗口只显示一次
- 引导模式只对远程数据源启动一次
- Twitter引导程序模式隐藏事件只触发一次
- Ng-pattern regex查找只出现一次的模式
- 如何从AsyncSubject(消费者模式)中准确地订阅一次元素
- 只对连续流作出一次反应的模式
- 淘汰模式窗口只打开一次
- 每x秒调用一次jQuery函数(对象文字模式)
- 使用JQuery Cookie每周显示一次Bootstrap模式
- Ajax模式只工作一次
- 使用布尔值只显示一次引导模式
- 加载带有引导模式的ajax页面,然后一次自动启动该模式
- 语义UI模式在Meteor中只显示一次