Я только что прочитал статью об асинхронном программировании и событии l oop. Во время чтения он описывает, что если я вызову асинхронный метод и передам ему обратный вызов, например, запрос Ajax
, веб-API будет обрабатывать событие. Событием в этом случае будет Ajax
запрос на получение сообщения. Когда событие вызывается, оно добавляется в очередь событий, а когда стек вызовов пуст и вызывается очередь событий, вызывается обратный вызов из события.
Учитывая, что обратный вызов очереди событий помещенный в стек вызовов, который находится в потоке пользовательского интерфейса, не будет ли это означать, что существенный длинный обратный вызов приведет к блокировке пользовательского интерфейса? Разве асинхронное программирование не предназначалось для предотвращения подобных проблем?
Редактировать: я только что понял, что могу проверить свою теорию, открыв браузер и протестировав ее сам, создав
setTimeout(function(){
while(true){}
}, 500)
при наборе текста это, пользовательский интерфейс будет зависать.
Означает ли это, что я прав? Асинхронный вызов и асинхронный код все еще могут заморозить интерфейс?