Взгляните на дебусинг. Это именно то, что вы хотите.
С помощью debouncing вы установите задержку. Деблокирование позволит мгновенно выполнить первый щелчок на go, но игнорирует любые дополнительные щелчки, пока не истечет период задержки.
Преимущество в том, что кнопка остается работоспособной (поэтому она не отключена, если вам понадобится ее использовать позже), но она предотвратит повторное нажатие кнопки несколько раз подряд.
Популярный способ получить доступ к функции debounce - использовать underscore.js
. Если вы выбрали подчеркивание, ваш код будет выглядеть так:
const sendRequest = _.debounce(() => {
// Code to send request
}, delayInMs);
Или в вашем случае:
const sendRequest = _.debounce(publishBuild, delayInMs);
Тогда на вашей кнопке вы вызовете функцию sendRequest onClick, как:
<button onClick={sendRequest}>Send request</button>