[JS] > Event Loop (Часть 1) Flashcards
Опишите схему работы Цикла событий
Цикл постоянно выполняеет задачи из стэка которые формируются от разбора функций помещеных в очередь
Если сэтк пуст мы берем следующую функцию из очереди, дробим ее на задачи для стэка после чего выполняем действия из стэка
Что такое Стек (Stack)?
Стек - это хранилище которое принимает задачу из очереди и делит ее на мелкие таски путем разбития внутриних колбеков
Что такое Куча (Heap)?
Куча — это большой неструктурированной области памяти (для чего ???)
Что такое Очередь (Queue)?
Очередь(макро очередь) — это список задач которые будут исполнятся, каждая задача ассоциируется с функциями которые вызывали
Что такое Цикл событий (Event loop)?
Бесконечный цикл которые обрабатывает действия которые поступают в очередь
Можно ли прервать задачу в цикле событий?
Нет, каждая задача выполняется полностью, прежде чем начнёт следующая.
Какие вы знаете минусы подхода цикла событий?
Минусы:
1. Мы не можем выполнять ресурсоемкие задачи так как это заставит всех ждать в очереди
Как влияет цикл событий на функ. setTimeout?
Функция задает не фиксированное, а минимальное время до исполнения действия.
Если очередь будет загружена то придется ждать ее освобождения
Какая консоль выведит сообщение первее, в чем подвох setTimeout(func, 0)?
(function () {
setTimeout(() => { console.log(‘test A’) }, 0);
console.log(‘test B’);
})();
setTimeout, помещает задачу в конец очереди, сначала выполнится осн. функция которая поместит вывод текста “test A” в конец очереди, и выведет текст “test B”, после завершения этой функция, выведется “test A”
Что такое макро очередь (macrotask queue)
Макро очередь это очередь которую использует цыкл событий для выполнения задач
Что такое микро очередь (microtask queue)
Очередь для исполнения асихнронных запросов
Какая будет последовательность алертов, и почему?
Code:
setTimeout(() => alert(“timeout”));
Promise.resolve().then(() => alert(“promise”));
alert(“code”);
Вывод будет:
1. code - синхронный код, сразу на вывод
2. promise - алерт попадает в список микро_задач
3. timeout - попадает в список макро задач
Web API
Веб апи это браузерный интерфейс позволяющий:
1) управлять домом (DOM)
2)..
Для чего нужны Web Workers?
Это поралельные потоки которые выполняют вычеслительные задачи и не блочат DOM