которой предполагается очень долгий процесс обработки данных. Нужно дать пользователю возможность прервать этот процесс нажатием на кнопку. Каким образом вы это сделаете?
webworkers
Все очень зависит от того что именно за процесс и как он реализован Если это бесконечный цикл то дело одно, если это промис какой-то, дело другое
Если речь идет о бесконечном цикле? В голову приходила мысль сделать что-то по типу let stopProcess = false; Подцепить прослушиватель('click', () => { stopProcess = true; } do { обработка данных } while (stopProcess == false) Но почему-то после этого браузер уходит в бесконечную загрузку
Потому что блокируете ивент лупу
Твой прослушиватель просто никогда не сможет вызвать коллбек, так как ты занял евент луп своим циклом.. ;(async () => { console.log('До клика на страницу') await new Promise(res => { const handler = function () { res() window.removeEventListener('click', handler) } window.addEventListener('click', handler) }) console.log('После клика на страницу') })()
;(async () => { console.log('До клика на страницу') await new Promise(res => { window.addEventListener('click', res, { once: true }) }) console.log('После клика на страницу') })()
Обсуждают сегодня