js 節流函式的核心思想:
防止頻繁的執行,
最後的操作(的影響)覆蓋掉之前的操作(的影響
).
實現方式:延遲執行(有點像"推遲滿足感")
這種實現方式讓我想到了之前我做的swing視窗空閒多久就自動關閉的功能
具體思路:
(1)swing不是當前視窗時,開始啟動定時器,
protected void windowdeactivated2(genericframe frame)
} else
if (timer == null)
if (task == null)
timer.schedule(task, milliseconds_wait_when_blur*1000);
// system.out.println("開始計時(second):"+timehwutil.formatdatezhall(timehwutil.getcurrenttimestamp()));
// system.out.println("定時時間(second):"+milliseconds_wait_when_blur);
islocked = true;
}
public
void windowdeactivated(windowevent e)
super.windowdeactivated(e);}
(2)在定時器等待的過程中,如果啟用了swing視窗,那麼取消定時器,
public void windowactivated(windowevent e)
genericframe.this.settiming(true);//恢復,不然後面就不會定時了.
super.windowactivated(e);
}
(3)如果不是當前視窗,則先取消定時器,再執行(1),即重新定時.
說明:swing視窗是當前視窗時,執行
windowactivated 方法
參考:
js函式節流(Throttle)
在瀏覽器 dom 事件裡面,有一些事件會隨著使用者的操作不間斷觸發。比如 重新調整瀏覽器視窗大小 resize 瀏覽器頁面滾動 scroll 滑鼠移動 mousemove 也就是說使用者在觸發這些瀏覽器操作的時候,如果指令碼裡面繫結了對應的事件處理方法,這個方法就不停的觸發。而當事件處理比較複雜的時...
js原生函式節流
函式節流就是一定時間內只觸發一次函式。原理是通過判斷是否到達一定時間來觸發函式。時間戳方案 function throttle fn,wait function handle window.addeventlistener mousemove throttle handle,1000 定時器方案 f...
JS函式節流 函式防抖
函式節流 throttle 函式節流 加入函式節流函式 使用方法 this.refs.throttle.addeventlistener scroll throttle that.console,300 函式防抖 debounce 很明顯,這樣的做法不好的是當使用者輸入第乙個字元的時候,就開始請求判...