Ну, как JavaScript Developers, мы все по привычке использовать обещания, таймеры и т. Д. Всякий раз, когда мы думаем о том, чтобы сделать определенный кусок кода асинхронного первым, что приходит на наш разум, использует обещания или, возможно, посетут (). Вы когда-нибудь задавались вопросом, как эти вещи работают под капотом? Я собирался через много блогов относительно исполнения очереди , MicroTasks и задания Поэтому я решил смириться с моими участиями в этом посте.
Давайте начнем с быстрого упражнения (просто почистить навыки JavaScript)
Теперь наденьте свои мыслительные шапки и подумайте, что будет выходом вышеуказанного фрагмента кода.
Правильный ответ идет как
- Позвоните на принтер
- Внутри принтера
- Обещание решено
- Тайм-аут 1.
Да, вывод не совсем то, что многое из нас должно ожидать » ♂️ 🤷. ♂. ️. Но что происходит за кулисами в JavaScript, очень занимается.
На самом деле, когда Функция принтера называется Внутри принтера зарегистрирован. Теперь важно отметить, что даже когда таймер установлен на 0 оператор журнала внутри Setimeate () выполняется после Обещание разрешено. Чтобы понять это, вам нужно знать, как цикл событий обрабатывает задачи и микрозазки. Контура событий работает непрерывно и гарантирует, что все задачи выполняются последовательно. Так что в нашем случае Setimeate () запланирован как задача, выполняемая в следующем цикле событий. Но вопрос здесь остается Как, черт возьми, пообещай перейти к заявлению первым?
Обещания поставлены в очереди как микрозаски. MicroTasks выполняются сразу после выполнения в данный момент выполняющих скрипт и, следовательно, обещания решаются в одном и том же контуре событий. Призыв .тогда () Полощает обещание в очереди MicroTask. Очередь MicroTask обрабатывается после обратных вызовов до тех пор, пока нет другого JavaScript не является средним исполнением. Вот почему Обещание решено вошел в систему ранее Тайм-аут 1 Отказ
Суть -:
- Задачи должны ждать следующего раунда исполнения
- Микрозаски могут выполняться в том же раунде после того, как текущий скрипт заканчивает выполнение
Надеюсь, я мог бы объяснить тему простым, но эффективным образом. Пока !!!
Оригинал: “https://dev.to/kpulkit29/understanding-microtasks-and-tasks-in-js-ba2”