Как JavaScript работает во время выполнения | Как работает цикл событий
Как работает JavaScript? Этот ответ следует знать до начала работы с JavaScript.
JavaScript всегда синхронный и однопоточный. Это означает, что он может выполнять одну вещь за раз. Но есть очень хорошее решение для обработки асинхронных вещей. Например:
Если мы думаем, что есть некоторые функции, которые нужно выполнять шаг за шагом, а также есть вложенная функция. Затем отдельные функции будут выполняться соответствующим образом и не будут ждать завершения этой вложенной функции, а вложенная функция пройдет через очередь и цикл обработки событий. После завершения этой единственной функции вложенная функция будет выполняться синхронно.
Цикл событий устанавливает расписание работы кода JavaScript на основе приоритета. Существует два этапа выполнения кода JavaScript: стек и очередь. Элементы стека сначала выполняются с помощью системы LIFO, а затем с помощью цикла событий элементы очереди выполняются с помощью системы FIFO.
Мы можем рассмотреть пример ниже, чтобы узнать, что такое стек? И его работа-
функция первая() {
второй();
console.log("Первая функция");
console.log("Окончательный результат");
}
функция секунда() {
третий();
console.log("Вторая функция");
}
функция третья() {
console.log("Третья функция");
}
//Вызов первой функции
первый();
Результат:
- Третья функция
- Вторая функция
- Первая функция
- Конечный результат
СТЕК:Здесь в стеке сначала идет функция first(), затем вторая() функция и, наконец, третья() функция. После выполнения третьей функции он вернется ко второй функции, пока выполнение второй функции будет выполнено, он вернется к первой функции и завершит код. Итак, эти коды проходят через систему LIFO в стеке. И это обычный синхронный процесс. Теперь мы можем посмотреть на другой пример, чтобы узнать, как асинхронные операции обрабатываются синхронно в JavaScript.
console.log("Первая функция");
console.log("Вторая функция");
console.log("Третья функция");
setTimeout(() =› console.log("Это первая функция setTimeout"), 5000);
setTimeout(() =› console.log("Это вторая функция setTimeout"), 5000);
console.log("Четвертая функция");
console.log("Пятая функция");
Результат:
- Первая функция
- Вторая функция
- Третья функция
- Четвертая функция
- Пятая функция
- Это первая функция setTimeout
- Это вторая функция setTimeout
Здесь первые три строки кода правильно выполняются в стеке. Затем в следующих двух строках есть две функции setTimeout. Эта функция не выполняется мгновенно, для ее выполнения требуется некоторое время. Поскольку JavaScript является синхронным, он не может выполнять несколько задач одновременно, а также невозможно дождаться, пока текущая операция перейдет к следующему шагу. Вот почему эти функции setTimeout передаются в очередь. После выполнения операций со стеком операции с очередью выполняются по принципу FIFO.
QUEUE: после последовательного выполнения первых трех строк кода следующие две строки кода отправляются в очередь. Поскольку они не могут выполняться последовательно, они должны выполняться асинхронно. После выполнения операций стека эти блоки кодов будут помещаться в стек один за другим и выполнять операции. И вот как JavaScript обрабатывает асинхронную операцию с помощью цикла событий.