Information
- Rating
- Does not participate
- Location
- Санкт-Петербург, Санкт-Петербург и область, Россия
- Date of birth
- Registered
- Activity
Specialization
Backend Developer, Frontend Developer
From 80,000 ₽
Git
JavaScript
HTML
CSS
React
TypeScript
Redux
SCSS
BEM
Node.js
Увеличение производительности при использовании асинхронного кода в одном потоке: Да, асинхронный код в JavaScript выполняется в одном потоке. Однако, путем использования асинхронных операций, таких как асинхронные запросы к серверу или чтение файлов, можно сделать код более эффективным. Например, вместо блокирования потока выполнения на ожидании ответа от сервера, приложение может выполнять другие задачи, что повышает общую производительность.
"Событие кладётся на стек вызовов": Да, это неправильная формулировка. Событие само по себе не кладется на стек вызовов. Событие может инициировать вызов обработчика, который будет помещен на стек вызовов для выполнения.
Event Loop и проверка стека вызовов: Event Loop фактически проверяет, не пуст ли стек вызовов перед тем, как взять следующее событие из очереди и поместить его на стек вызовов. Это делается для того, чтобы обеспечить последовательное выполнение операций и избежать блокировки потока выполнения.
"Вызовется через 2 секунды": Да, это неправильная формулировка. Верно, что содержимое функции
setTimeout
будет вызвано через 2 секунды после добавления в очередь событий. Таким образом, код после вызоваsetTimeout
будет выполнен до истечения 2 секунд, а содержимоеsetTimeout
будет выполнено после этого времени.Пример с async/await и порядок выполнения: Да, я согласен, порядок выполнения в примере с async/await не был объяснен ясно. В данном примере "Конец" выводится до выполнения асинхронной операции, так как асинхронная функция
myAsyncFunction()
вызывается, но не блокирует выполнение кода дальше. Программа продолжает выполнение сразу после вызоваmyAsyncFunction()
, и "Конец" выводится в консоль. После того, как асинхронная операция завершится, результат будет выведен в консоль.Все эти аспекты важны для понимания работы JavaScript и его асинхронной модели выполнения. Спасибо за ваш отзыв, я учту ваши замечания при предоставлении объяснений в будущем. А данные формулировки постараюсь переписать по конкретнее, чтобы более не возникало таких вопросов при чтении)
Спасибо за комментарий, добавил пример и объяснение к нему)
Ваше замечание верно. В JavaScript микрозадачи, такие как обработчики промисов, выполняются после того, как текущий стек вызовов завершил свою работу, но до следующего события цикла событий (event loop) или рендеринга браузера. Это означает, что они выполняются в так называемом "макрозадаче" или "макротаске", которая включает в себя весь блок кода, выполняемый без прерывания, например, выполнение функции или обработчик события.
Сначала выполняется
console.log('Начало')
, затем создается разрешенный промис с помощьюPromise.resolve()
. После этого добавляются обработчики.then()
, которые ставятся в очередь микрозадач. Затем выполняетсяconsole.log('Конец')
.Это происходит потому, что обработчики
.then()
добавляются в очередь микрозадач, которая выполняется после того, как текущий стек вызовов завершил свою работу, но до следующего события цикла событий или рендеринга браузера. Это позволяет асинхронным операциям, таким как промисы, выполняться без блокировки основного потока выполнения кода, что улучшает производительность и отзывчивость веб-приложений.Надеюсь данным дополнением, я сомг устранить недопонимание)
Спасибо за комментарий, не мог ли бы ты конкретно сказкть, в каком блоке не ясно выраженно, что будет отображаться первым , чтобы я смог добавить комментарий и разъяснить подробнее)
Спасибо за замечание, испарил.
Спасибо за комментарий, я постарался разобрать основы основ, оставил болле глубокие источники информации в спойлере)
Добавил комментарии к каждому коду, надеюсь поможет лучше понять, что там происходит)
Спасибо за комментарий и за конструктивное замечание, всё исправил и дополнил, спасибо!)
Спасибо большое за комментарий, я постарался объяснить самые-самые азы, для тех кто только начинает и хотел бы что-то почитать на эту тему. Идти за более продвинутой информацией следует к документации. Я не преследовал цели пойти дальше и брать более сложные термины и все в этом духе, по крайней мере в этой статье)
Я постарался затронуть главные аспекты, не стремясь сделать из этой статьи техническую документацию
Спасибо за комментарий!)