Files
DelayedTask 类提供了对"缓冲区"简便执行的一种方法, 执行setTimeout时,新的超时时限会取消旧的超时时限。调用时, 该任务将在执行之前等待指定的一段时间。如果在等待的时间中, 再调用此任务时,原始调用将会被取消。 这样继续下去,对于每次迭代该函数只是被调用一次。
此方法对于类似检测用户是否已完成在文本框中键入完值尤其有用。 例如验证表单的时候,键盘按下(keypress)那一瞬, 就可用上该类(不会立即验证表单,稍作延时)。 keypress事件会稍作停顿之后(某个时间)才继续执行。
var task = new Ext.util.DelayedTask(function(){
alert(Ext.getDom('myInputField').value.length);
});
// 我们在函数调用之前等待500毫秒。如果用户在这500毫秒期间按另一个键,
// 它将会被取消,我们就要再次等待下一个500毫秒。
Ext.get('myInputField').on('keypress', function(){
task.delay(500);
});
请注意我们使用 DelayedTask 在这里要说明一点。
关于 addListener/on 的配置选项 buffer
将为你设置延迟的任务到缓冲事件中。