Javascript работает как графический интерфейс, поэтому два события не обрабатываются одновременно.
На мой взгляд, лучшим решением, если ваша обработка слишком тяжелая, было бы изменить ее так, чтобы ее можно было выполнять небольшимишаги.Затем, когда вы получаете событие keyup, вы просто делаете первый шаг, и каждый шаг выполняет setTimeout
вызов с нулевой задержкой для запуска следующего шага
. Таким образом, перезапуск вычислений тривиален.
Это работает, потому что таймауты всегда имеют самые низкие приоритеты (т. Е. Если будет другой keyup, он будет обработан немедленно, и вы перезапустите вычисление вместо продолжения предыдущего).