9月 04, 2020 Programming
### 為何防止短時間內重覆執行功能?

現時得多的應用程式都是建立在 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 秒在被重覆執行。
過去文章
2025 (9)
4 (5)
3 (1)
2 (3)
2024 (25)
11 (3)
10 (3)
9 (1)
3 (18)
2022 (6)
10 (1)
6 (2)
5 (1)
3 (1)
1 (1)
2021 (21)
11 (7)
7 (1)
6 (2)
5 (2)
4 (6)
3 (2)
2 (1)
2020 (92)
12 (1)
11 (2)
10 (4)
9 (10)
8 (5)
7 (1)
6 (3)
5 (1)
4 (4)
3 (25)
2 (7)
1 (29)
2019 (57)
12 (25)
11 (7)
9 (25)