### 為何防止短時間內重覆執行功能? 現時得多的應用程式都是建立在 web service 上,在使用者介面及服務器之間的溝通,很多都會使用非同步來進行,以提升使用者的體驗。為免使用者可以重覆 submit 表單,在設計使用者介面時需要防止這個情況。例如把 submit disable 以防止使用者重覆按下。 ### Delay Call 要處理需要短時間內需要重覆執行的功能,但是又想限制在特定時間後才一次過累積執行 (例如即時提供 suggestion 的 combo box),就可以使用 Delay Call 的方法。 ### 實作方法 以下會使用 JS 來作個例子 : ```js // variable for saving delay call state let delayId = undefined; // function want to prevent multiple call in short moment const requestJson = () => { // do ajax call }; // find dom element and add click handler document.getElementById('myButton').addEventListener('click', evt => { // check delay call state if( typeof delayId === 'undefined') { // assign delay call id (timeout id) delayId = setTimeout(() => { // clear delay id delayId = undefined; // call function requestJson(); }, 1000); } }); ``` 以上的代碼可以防止 `requestJson` 在 1 秒在被重覆執行。