Можно ли сказать, что выполнение каждой функции в js является «атомарной операцией» для одиночного потока цикла событий? Я имею в виду, что никакие 2 функции (или больше) могут быть выполнены за один разВыполнение атомарного события цикла javascript событий
ответ
Простой ответ, это не так. Подумайте о функциях, переданных setTimeout
или XmlHttpRequest.onreadystatechange
и т. Д. Эти функции будут выполняться в определенное или неопределенное время в будущем . Если функция уже выполняется при запуске setTimeout или происходит событие изменения состояния готовности, эту функцию не ждет, пока она не завершится до того, как будет выполнена стадия выполнения setTimeout или готового состояния.
Вместо этого два переводчика (или более) могут быть выполнены интерпретатором одновременно. Может показаться, что они одновременно выполнены, но технически это не тот случай.
Первое выполнение функции приостанавливается (после завершения команды и до начала следующего), а инструкции в другой функции выполняются в течение некоторого времени. Затем выполнение этой функции приостанавливается, а один, приостановленный до этого, возобновляется.
Javascript использует только одну ветку. Таким образом, в то же время совершенно невозможно, что 2 инструкции запускаются параллельно. Тем не менее, есть очередь событий, которые увольняются, чтобы «прыгать» с одной части кода на другую.
НО
функция использует более 1 инструкции, так что это может произойти, они работают синхронизировано.
Это правда, javascript предназначен для однопоточного «псевдоасинхронного» сценария на основе событий.
Однако это что-то называется WebWorker, оно создает новый процесс в системе с данным файлом сценария, поэтому он может принимать 2-й поток для вашего приложения. INTRESTED (?) - перенаправление What are the use-cases for Web Workers?
Да, функция является атомарными операциями
Чтобы быть более точными, каждая функция является сообщением, которое является частью queue, где каждое сообщение будет переходить к рабочему и казнено к концу.
В случае неблокирующих операций, в большинстве случаев небольшие блокирующие операции будут выполняться первой, так как требуется время для выполнения гораздо больше для таких вещей, как setTimeout
с созданием функции.
console.log('foo');
setTimeout(function() {
console.log('bar'); // This will be called last
});
console.log('baz');
, но если мы заменим 'console.log ('baz');' на 'while (true);' 'bar word 'вообще не будет отображаться –
, потому что его однопоточная. Если вы держите этот единственный поток занятым навсегда, он никогда не перейдет к следующей инструкции. Вот почему вы никогда не используете сон или тяжелые операции не в асинхронной работе в javascript. Вы бы заблокировали GUI – Mayday
@ Vladuysha.Я думаю, что это потому, что 'while (true);' также является атомарной операцией и временем выполнения, ожидающим окончания его выполнения из-за [выполнения до завершения] (https://developer.mozilla.org/en-US/docs/Web/ JavaScript/EventLoop # Run-to-completion). –
- 1. Выполнение пользовательских событий (JQuery/Javascript)
- 2. javascript выполнение событий порядок
- 3. Выполнение собственного пользовательского цикла обработки событий .NET
- 4. Как задержать выполнение цикла цикла в Javascript
- 5. Как отменить выполнение javascript после события click?
- 6. Eclipse Kepler - Выполнение незавершенного цикла события
- 7. Как выполнить отложенное выполнение javascript вне цикла событий, подобное GWT's DeferredCommand
- 8. Обработчики событий внутри цикла Javascript - нужно закрыть?
- 9. JavaScript - Асинхронные события во время цикла.
- 10. Выполнение события-источника
- 11. О потоке цикла событий?
- 12. Мониторинг цикла событий asyncio
- 13. Способы просмотра событий цикла
- 14. Выполнение связанных обработчиков событий javascript asychrounously
- 15. Выполнение событий Genexus из кода JavaScript
- 16. Свертывание нескольких событий Javascript до одного события
- 17. Доступ объект события в обработчик событий Javascript
- 18. JQuery/JavaScript события - прототип обработчика событий
- 19. События событий Javascript, которые срабатывают несколько раз?
- 20. Является ли выполнение атомарного объекта C++ 11 атомарным?
- 21. Выполнение записи атомарного файла в файловой системе без транзакции
- 22. Выполнение событий последовательно в jQuery
- 23. Предотвращение цикла обработчика событий
- 24. Выполнение Javascript события непосредственно из PowerShell
- 25. нарушить выполнение javascript из внутреннего тайм-цикла
- 26. Выполнение для цикла в javascript неуспешно
- 27. Понимание события-цикла в узле.js
- 28. Какая фаза цикла события выполняет Ordinady Код JavaScript
- 29. Выполнение события Fullcalendar
- 30. События событий жизненного цикла объекта JPA против триггера базы данных
«они» - инструкции U meen? –
Я имею в виду функции – Mayday