Вот общее решение для предотвращения множественных запросов во время действия Ajax.Как предотвратить многочисленные запросы Ajax без введения побочных эффектов
let isRequesting = false
$('#fetch').on('click',() => {
if(isRequesting) {
console.log('ajax still in progress, please wait')
return false
}
isRequesting = true
$.get(SOME_RESOURCE, (data) => {
console.log('success with :', data)
isRequesting = false
})
})
Но как я могу закончить эту работу, не меняя состояния в приложении, как это делают функциональные программы.
Лично я обычно отключил кнопку/ссылку в начале события click и включил ее в конце обратного вызова успеха/отказа. Это более понятно пользователям в большинстве случаев. – Obversity
Целью в FP является устранение ненужного состояния и разумное управление необходимым состоянием. В этом конкретном сценарии вы имеете дело с необходимым состоянием - вы хотите, чтобы ваш код функционировал по-разному в зависимости от того, находится ли он в состоянии «готов» или «загружается». – MarkNFI