Скажите, что у меня есть setInterval
вызов с 10ms в качестве аргумента. Я запускаю его, и у меня есть код JavaScript, для выполнения которого требуется 25 мс. Через 10 мс первый обратный вызов интервала помещается в очередь. Через 20 мс нет ничего лишнего в очереди, потому что (предположим, что логика веб-API, если это то, где происходит отметка setInterval
), один экземпляр setInterval
уже поставлен в очередь.setInterval и цикл событий
Теперь, когда основная логика завершена, начинается setInterval
, и требуется, скажем, 10 мс (так к тому времени, когда она завершится, 35 мс пройдет от выполнения программы). В 30 мс, тогда как обратный вызов setInterval
находится в стеке и выполняется, появляется еще один тик. Что происходит сейчас? Будет ли еще один экземпляр очереди обратного вызова setInterval
в очереди событий? Или будет ли среда браузера видеть, что в выполнении стека есть экземпляр интервала и пропустить нажатие нового экземпляра в очередь событий, тем самым делая следующий гаджет экземпляра setInterval
в 40 мс. наконец нажимаем новый обратный вызов?
Проверьте это, используя console.log, посмотрим, что произойдет – user2182349
Можете ли вы показать свой сценарий здесь? –
Невозможно создать код для проверки этого, если только не использовать некоторые высокоточные инструменты производительности, с которыми я не знаком. – daremkd