Я согласен с другими авторами, занятый сон - это просто плохая идея.
Однако setTimeout не задерживает выполнение, он выполняет следующую строку функции сразу после истечения времени ожидания SET, а не после истечения времени ожидания, так что не выполняет ту же задачу, что и сон.
Способ сделать это - разбить вашу функцию на части до и после.
function doStuff()
{
//do some things
setTimeout(continueExecution, 10000) //wait ten seconds before continuing
}
function continueExecution()
{
//finish doing things after the pause
}
Убедитесь, что имена ваших функций по-прежнему точно описывают, что делает каждый фрагмент (IE GatherInputThenWait и CheckInput, а не funcPart1 и funcPart2)
Редактировать
Этот метод позволяет не выполнять выбранные вами строки кода до ПОСЛЕ вашего тайм-аута, в то же время возвращая управление обратно клиентскому ПК, чтобы выполнить все остальное, находящееся в очереди.
Дальнейшее редактирование
Как указано в комментариях, это абсолютно НЕ РАБОТАЕТ в цикле. Вы можете сделать какой-нибудь причудливый (безобразный) взлом, чтобы заставить его работать в цикле, но в целом это просто приведет к катастрофическому коду спагетти.
Unfortunately, ft_min_word_len is a global system variable and cannot be set dynamically: see MySQL's online docs. Changing it would mean rebuilding every FULLTEXT
index around, btw, so you can see why they don't want non-admins to mess with it.
I fear your workaround (or something entirely equivalent) is the only way to solve the problem in your situation. Sorry! (But, compliments for thinking of it!).