Легко ли понять определение «асинхронного события»? [закрыто]

Я часто сталкивался с этим термином, и даже после поиска в Google все еще не могу понять, что именно он означает. Есть ли какое-то простое для понимания (в идеале с примерами) определение того, что асинхронное событие может предоставить кто-то?

Спасибо!

88 голосов | спросил jasonbogd 30 ThuEurope/Moscow2010-12-30T03:18:10+03:00Europe/Moscow12bEurope/MoscowThu, 30 Dec 2010 03:18:10 +0300 2010, 03:18:10

11 ответов


0

Пример не программирования:

Синхронный Вы хотите пиццу на ужин, и вы из замороженного вида. Поэтому вы должны перестать играть в WOW, что расстраивает вашу гильдию. Вы идете на кухню, делаете тесто, засыпаете его соусом, добавляете сыр и душите его своим любимым беконом. Вы только что потратили 20 минут на приготовление пиццы, а еще 10 минут в духовке. Таймер подает звуковой сигнал, и вы вытаскиваете горячий пирог. Вы можете сесть перед компьютером, съесть пиццу и продолжить набег.

Асинхронный Вы хотите пиццу на ужин во время игры WOW. Вы открываете окно браузера на своем 5-м мониторе. Вы загружаете сайт Pizza и заказываете свою дополнительную сырную пиццу с беконом со стороной чесночного сока с беконом. Вы возвращаетесь к своему рейду и через 20 минут звонит дверной звонок. Вы получаете пиццу. Вы садитесь перед компьютером, едите пиццу и продолжаете свой набег.

Так в чем же разница? Один способ тратить 20-30 минут драгоценного времени на WOW, а другой - на 20 долларов плюс чаевые.

ответил epascarello 30 ThuEurope/Moscow2010-12-30T08:28:01+03:00Europe/Moscow12bEurope/MoscowThu, 30 Dec 2010 08:28:01 +0300 2010, 08:28:01
0

Ваша страница доставляется с сервера в браузер клиента, где-то в Интернете. Браузер нарисовал страницу на экране, и кто-то - или какая-то вещь - смотрит на нее. Это игра ожидания. Глаза смещаются взад и вперед, просматривая те или иные детали быстрыми прыжками, время от времени бросаясь в сторону от экрана, чтобы исследовать отвлекающие факторы в окружающей среде. Часы тикают. Страница светится мягко, пассивно, когда пользователь неактивно зависает, рука свободно накидывается на мышь, шея согнута вниз и все больше и больше нацелена на то, что может предложить ваша страница.

Внезапно, без какого-либо предупреждения, курсор начинает двигаться, когда рука мыши слегка напрягается и начинает подталкивать маленький пластиковый удар по шероховатой поверхности стола. По мере движения мыши ее суррогат на экране движется в тесной имитации, выпасая интересные картинки и остроумные замечания в содержании вашей страницы. В конце концов решение принимается, движение останавливается, мышца или два слегка сокращаются, и кнопка мыши нажимается настойчивым пальцем. Микровыключатель в мыши запускает электронный импульс, и внезапно браузер узнает о том, что произошло: щелчок мыши.

При этом все, что делал пользователь, глядя на страницу, происходило совершенно непредсказуемо для браузера, любого клиентского кода на вашей веб-странице и всего, что находится на ваших серверах. Не было заметного «времени ожидания» между человеческими действиями. Следовательно, действия, передаваемые оборудованием, подключенным к компьютеру пользователя, происходили , когда они происходили , а не в соответствии с предсказуемыми часами, то есть они происходили асинхронно .

ответил Pointy 30 ThuEurope/Moscow2010-12-30T03:30:12+03:00Europe/Moscow12bEurope/MoscowThu, 30 Dec 2010 03:30:12 +0300 2010, 03:30:12
0

Подумайте об окончании интервью, и они говорят: «Не звоните нам, мы вам позвоним». В этом суть асинхронного события.

Обычно вы определяете функции и вызываете функции явно. Ваша программа имеет структуру, в которой она начинается со строки 1, затем строки 2, и, за исключением некоторого условного кода и итераций, вызова функций и т. Д., Существует простая, линейная, синхронная структура.

Но в некоторых случаях у вас есть действия, которые запускаются событиями, не относящимися к прямому управлению программой, такими вещами, которые происходят извне программы, такими как события интерфейса пользователя (пользователь щелкает мышью) или сетевое событие (кто-то пытается подключиться к вашему серверу). Ваш код не генерирует эти события напрямую. Они генерируются вне вашей программы, часто ОС, основываясь на их мониторинге устройств пользовательского интерфейса и других систем. Это так называемые асинхронные события.

Просто помните: «Не звоните нам, мы вам позвоним»

ответил Rob Weir 30 ThuEurope/Moscow2010-12-30T03:30:04+03:00Europe/Moscow12bEurope/MoscowThu, 30 Dec 2010 03:30:04 +0300 2010, 03:30:04
0

"В программировании асинхронные события - это события, происходящие независимо от основного потока программы. Асинхронные действия - это действия, выполняемые в неблокирующей схеме, позволяющей основному потоку программы продолжить обработку."

  

"С помощью Ajax веб-приложения могут   получить данные с сервера   асинхронно в фоновом режиме   не мешая отображению   и поведение существующей страницы. "

Когда вы нажимаете "Изменить и сохранить в SO", это происходит асинхронно.

ответил Dejan Marjanovic 30 ThuEurope/Moscow2010-12-30T03:21:07+03:00Europe/Moscow12bEurope/MoscowThu, 30 Dec 2010 03:21:07 +0300 2010, 03:21:07
0

Асинхронное событие - это событие, которое выполняется вне основного потока приложения.

Лучший способ понять это сравнить с событиями, которые выполняются синхронно. Наиболее типичным примером будет загрузка веб-страницы.

Когда вы переходили на эту страницу, вы нажимали на ссылку и ждали загрузки страницы, но не могли взаимодействовать или использовать эту страницу до тех пор, пока она не закончила загрузку. Напротив, если бы на этой странице было событие AJAX (это асинхронное событие JavaScript и XML), связанное с каким-либо действием пользователя, эта страница загружала бы некоторые данные из другого источника асинхронно - параллельно (теоретически) с любыми другими выполняемыми действиями.

Пример с двумя синхронными событиями (A и B): Сначала А что-то делает. Когда А закончил, Б что-то делает.

Пример с двумя асинхронными событиями (A и B): И A, и B делают что-то одновременно, и ни одно событие не ожидает другого.

ответил chaimp 30 ThuEurope/Moscow2010-12-30T05:56:54+03:00Europe/Moscow12bEurope/MoscowThu, 30 Dec 2010 05:56:54 +0300 2010, 05:56:54
0

Вот пример асинхронной операции в javascript (вам нужно открыть консоль javascript)

console.log('One!');
setTimeout(function(){console.log('Two!');},0);
//Doesn't wait
console.log('Three!');};

//OUTPUT:
//One!
//Three!
//Two!

Вызов console.log('Two!') будет выполнен без блокировки остальной части кода, которая происходит после него.

В реальном сценарии замените setTimeout кем-то, кто нажимает кнопку на веб-странице. Реакция на нажатие кнопки будет происходить в конечном итоге, не блокируя выполнение другого кода, такого как рендеринг страницы.

ответил statenjason 30 ThuEurope/Moscow2010-12-30T03:45:31+03:00Europe/Moscow12bEurope/MoscowThu, 30 Dec 2010 03:45:31 +0300 2010, 03:45:31
0

Проще говоря, это означает что-то, что происходит через неизвестное количество времени, поэтому не ожидайте немедленных результатов.

Например, «Мама, можно мне пять долларов?»

Протягивая руку за деньги, я ожидаю, что она немедленно ответит, дав мне деньги (синхронно).

Реально, она посмотрит на меня на мгновение или два, а затем решит ответить, когда захочет (асинхронно).

ответил Kai 30 ThuEurope/Moscow2010-12-30T03:42:35+03:00Europe/Moscow12bEurope/MoscowThu, 30 Dec 2010 03:42:35 +0300 2010, 03:42:35
0

Когда два разных события происходят отдельно друг от друга, то вы не можете сделать это

task1
task2

без проверки того, что task1 действительно завершено.

ответил Teson 30 ThuEurope/Moscow2010-12-30T03:20:15+03:00Europe/Moscow12bEurope/MoscowThu, 30 Dec 2010 03:20:15 +0300 2010, 03:20:15
0

Асинхронные события - это те события, которые мы не знаем, когда это произойдет в будущем, например, когда сервер запрашивает какой-то файл, который мы не знаем, когда он выполнит наш запрос, или события пользовательского интерфейса, которых мы не знаем когда пользователь нажимает на кнопку или другой элемент пользовательского интерфейса, но, несмотря на это, происходят другие вещи на странице или в приложении, он ничего не блокирует, скажем, страница не отображает весь пользовательский интерфейс, пока какой-то файл с сервера не появится или не произойдет какое-либо событие. вещи независимы, это сила асинхронных событий, просто скажем, независимые события

ответил blackHawk 16 PMpSat, 16 Apr 2016 15:53:09 +030053Saturday 2016, 15:53:09
0

Синхронный Vs. Асинхронные события

Некоторые обработчики событий вызываются сразу же, когда происходит событие. Это так называемые синхронные события. Примером является DocumentNew. Он вызывается, как только пользователь создает новый документ.

Однако некоторые события вызываются вскоре после того, как событие происходит, обычно после небольшого периода простоя. Это так называемые «асинхронные» события. Они асинхронны, потому что это приведет к дестабилизации Source Insight, если пользовательский макрос будет вызван в тот момент, когда произошло событие.

ответил Vitthal Walunj 8 +03002015-10-08T07:45:41+03:00312015bEurope/MoscowThu, 08 Oct 2015 07:45:41 +0300 2015, 07:45:41
0

Если код синхронный (или синхронизирован), это означает, что каждый фрагмент кода выполняется по порядку, последовательно, и следующий фрагмент кода не может быть запущен, пока предыдущий не будет завершен. Большая часть кода обычно является синхронной.

Если код асинхронный (или асинхронный), это означает, что код может выполняться отдельно и независимо от другого кода. Если асинхронный код находится в середине группы синхронизирующего кода, в контексте этого конкретного вопроса асинхронный код будет выполняться только при его событии, независимо от того, где в коде синхронизации вы его поместили. Он полностью отделен и не зависит от кода синхронизации и запускается всякий раз, когда его событие указывает, а не только когда выполняется предыдущий фрагмент кода. Некоторые примеры этого могут относиться к коду, который выполняется с определенным интервалом времени, после успешного сохранения файла, после отправки веб-запроса, при нажатии пользователем кнопки или после загрузки изображения.

ответил Grant Gryczan 25 PMpWed, 25 Apr 2018 23:59:12 +030059Wednesday 2018, 23:59:12

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132