Я пишу приложение чат-бота и хотел поймать несколько пользовательских вводов, выполняя размытие из поля ввода и фокусируясь обратно через 3 секунды (когда бот ответил).
Я использовал setTimeout для этого, и он работает в первый раз, но кажется, что он становится короче после многократного вызова функции.
Код, который я использовал, находится в виджете чата React и выглядит так:
handleKeyPress = (e: KeyboardEvent) => {
if (e.keyCode === 13 && this.input.value.replace(/\s/g, "")) {
this.input.blur();
this.say(this.input.value);
// Reset input value
this.input.value = "";
this.refocus(document.getElementById('userText'));
}
};
refocus = (element: HTMLElement) => {
var time = setTimeout(function() {
element.focus();
}, 3000);
};
В этом коде я использую setTimeout после отправки сообщения в бэк-приложение бота, чтобы у бота было время для ответа.
Я не могу понять, почему это не работает, и мог бы действительно использовать некоторые предложения ...