Если я зарегистрировал трудоемкую функцию обратного вызова слушателю событий, и это событие будет запущено дважды за короткий период. Будет ли второй обратный вызов заблокирован первым?Является ли блокировка запросов JavaScript?
Я попробовал это в браузере:
document.body.onclick = function() {
var date = new Date;
console.log('click event at ' + date);
while(new Date - date < 1e4) {};
console.log('callback end');
}
В результате, второй обратный вызов был выполнен сразу после первой один сделано.
Итак, теперь я смущаюсь с неблокирующим асинхронным модулем JavaScript: какая часть была выполнена асинхронно?
Спасибо за anwser! Согласно ссылке ссылки, даже я поместил трудоемкий блок кода в 'setTimeout()', он все равно будет блокировать поток, пока исполняемый код внутри таймера будет выполнен, и предотвратит запуск следующего обратного вызова в очереди до тех пор, пока это не будет выполнено , Это правильно? –
@ Dolphin_Wood - да, это так. Пока часть кода запущена, другим событиям придется подождать, пока этот код не будет выполнен, прежде чем они вернутся к своей очереди. – jfriend00