Следующий код запускается, когда пользователь отправляет форму. После проверки количества отправленных форм (пользователь может отправить только 5 раз) форма записывается на стороне сервера в гугл лист.
function validateForm(form){
if (count>=MAX){
var msg = {
title:"Idea limit reached",
body:"You can propose a maximum of "+MAX+" ideas for this theme",
btn:"OK"
}
screenMessage(msg)
}
else{
var msg = {
title:"Idea recorded",
body:"You can still submit "+(5-count-1)+" ideas",
btn:"OK"
}
google.script.run.withSuccessHandler(successMessage(msg), resetForm()).recordIdea(form)
count++
}
return false;
}
function resetForm(){
$('#title').val("")
$('#description').val("")
$('input[name = "tags"]').val("")
$('.creation-tags').empty()
$('.suggested-tags').empty();
}
Моя проблема в том, что когда я проверяю базу данных, введенная мной информация пуста! Это означает, что функция «resetForm» фактически вызывается ДО отправки формы.
Есть ли способ обеспечить вызов функции resetForm только после того, как значения, введенные пользователем, были успешно отправлены?
Я попытался вложить функцию в функцию SuccessMessage без положительного результата.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Эта строка кода вызывает resetForm() сразу, не устанавливая функцию обратного вызова:
google.script.run.withSuccessHandler(successMessage(msg), resetForm()).recordIdea(form)
Это должно выглядеть так:
google.script.run.withSuccessHandler(function(){successMessage(msg), resetForm()}).recordIdea(form)
Короче говоря, чтобы попытаться объяснить это лучше, вам нужна «функция обратного вызова» в «withSuccessHandler». Вместо этого ваш код в основном вводит возвращаемое значение «successMessage» и «resetForm», потому что они запускаются, как только Javascript их встречает. Вы можете найти всевозможные статьи и сообщения о функциях обратного вызова, если вам нужно лучше понять их.