tgoop.com/frontendInterview/3898
Last Update:
Какие есть примеры микрозадач ?
Микрозадачи — это задачи, которые планируются для выполнения после завершения текущего выполнения скрипта, но до того, как браузер продолжит другие задачи, такие как рендеринг или обработка событий. Они имеют более высокий приоритет по сравнению с макрозадачами и выполняются немедленно после текущего стека вызовов, но перед любыми другими событиями или рендерингом.
1. Промисы используют механизм таких задач для своих колбэков then
, catch
, и finally
. Когда промис переходит в состояние выполнено (fulfilled
) или отклонено (rejected
), соответствующие колбэки планируются как микрозадачи. Это означает, что они будут выполнены сразу после текущего стека вызовов, но до того, как движок возьмется за выполнение следующей макрозадачи, например, обработку событий или таймеров.
console.log('Начало');
Promise.resolve().then(() => {
console.log('Обработан промис');
});
console.log('Конец');
Вывод будет следующим:
Начало
Конец
Обработан промис
Сначала выполняется синхронный код (
Начало
и Конец
), и только после его завершения, но до того как браузер перейдет к другим задачам, выполняются микрозадачи, связанные с промисами (Обработан промис
).2. Функция queueMicrotask позволяет явно добавить микрозадачу в очередь микрозадач. Это может быть полезно для разделения вычислений на более мелкие асинхронные операции, не блокируя поток выполнения и интерфейс.
console.log('Перед queueMicrotask');
queueMicrotask(() => {
console.log('Выполнено в микрозадаче');
});
console.log('После queueMicrotask');
Вывод будет аналогичным:
Перед queueMicrotask
После queueMicrotask
Выполнено в микрозадаче
Сначала выполняется основной поток кода, затем микрозадача, добавленная через
queueMicrotask
.👉 @frontendInterview
BY Frontend Interview - собеседования по Javascript / Html / Css
Share with your friend now:
tgoop.com/frontendInterview/3898