Конкретная проблема с запросом на извлечение при вводе

#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. Я уже делаю это. Я так и сказал в своей операции. «Мое решение состоит в том, чтобы отключить поле ввода в ожидании ожидающего решения обещания (которое занимает, возможно, четверть секунды)».