#input #fetch #disabled-input
Вопрос:
У меня есть поле ввода, и при вводе вызывается функция. Это останавливает тайм-аут, если он есть, если нет, то мы знаем, что пользователь перестал печатать. Если тайм-аут заканчивается, он делает запрос на выборку, чтобы определить, является ли ввод пользователя допустимым. Наконец, если запрос на выборку возвращает действительный, ввод пользователя переходит в список. Он никогда не будет действителен, если существует специальный символ.
Моя проблема заключается в том, что, когда пользователь вводит допустимый ввод после истечения 1-секундного тайм-аута, если пользователь просто попадает в это микросекундное окно между выборкой и отправкой в список, пользователь вводит специальный символ… допустимый ввод пользователя плюс специальный символ войдут в список. Мое решение состоит в том, чтобы отключить поле ввода в ожидании ожидающего решения обещания (которое занимает, возможно, четверть секунды).
Однако мой босс хочет, чтобы я посмотрел, есть ли лучшее решение. Поскольку моя ситуация кажется довольно уникальной, я подумал, что просто спрошу других разработчиков, может быть, у них есть лучшее решение. Всем спасибо за вашу помощь.
Код выглядит примерно так:
function (){
if (timeoutexists){
clearTimeout
}
timeout = setTimeout ({
submitting = true
fetch user input
submitting = false
if fetch resolve input is valid and put users input in list else it's invalid and do not put user input in list.
})
}
Комментарии:
1. вам нужно будет поддерживать другую переменную состояния, которая сообщает вам, получаете ли вы данные или нет. поэтому при извлечении: игнорируйте входные данные и не вводите их в массив.
2. Я уже делаю это. Я так и сказал в своей операции. «Мое решение состоит в том, чтобы отключить поле ввода в ожидании ожидающего решения обещания (которое занимает, возможно, четверть секунды)».