Обработка асинхронных циклов Javascript

У меня есть цикл JavaScript, который занимает некоторое время для обработки. Я хотел бы уменьшить его, но он должен обрабатывать большое количество данных. Пока он работает, браузер перестает отвечать на запросы, конечно. Я читал, что лучший способ справиться с этим в javascript - это использовать какой-то асинхронный цикл. Таким образом, щелчки мыши и т. Д. Могут продолжать обрабатываться между циклами обработки. Существуют ли какие-либо стандартные асинхронные структуры, которые будут хорошо работать для этого? Или кто-то может привести простой пример того, как это может быть закодировано? Спасибо!